这几天看到俩问scanf相关的,我也来问一个
c吧
全部回复
仅看楼主
level 10
w34rt67u 楼主
(虽然很多年前就不推荐使用scanf,改用scanf_s ... )
某些scanf函数的实现,它有个返回值。
运行的时候,程序可能会去做一些分析来生成这个返回值。
假设程序的最终结果或中间结果都没有用到这个返回值。
如像下面这样用一下:
scanf(" %d",&x);
return 0
什么情况下它可能会被优化掉?
可以考虑修改编译优化选项,或CPU处理的时候有没有可能会自动把一部分内容略过。
2022年06月05日 11点06分 1
level 12
我用clang11测试了一下,所有优化等级生成的汇编代码都是相同的,只有不开优化有不同……但我也不知道是不是把返回值优化掉了,毕竟没学过汇编。
2022年06月05日 12点06分 2
不清楚 ~ 在想不同版本和编译器处理这个问题会不会不一样。
2022年06月05日 13点06分
1