DEV C++如何怎样开启开发者选项wall警告选项?

可以看到Warning都是因为PART1中使用了格式符%I,而产生的。PART2则一切正常编译器没有给出任何警告信息。

但是——请看测试结果:


结果恰恰相反PART1的工作完全正常,PART2却产生了问题.
为什么呢我是这样猜想的:

进行函数参数类型检查的是在编译阶段,gcc编译器对这段代码进行检查显然它不认得"%I64d",
接着gcc发现整个格式字苻串里没有合法的说明符,但传给printf/scanf的除了格式字符串还有数据参数,

对于"%lld"和"%llu"gcc理所当然地接受了。悲剧就此埋下了伏笔

——于是就出現了上面的结果。

参考资料

 

随机推荐