iKEIL调试printf里的一个有趣现像。

[复制链接]
2946|6
 楼主| wasay 发表于 2011-4-21 22:06 | 显示全部楼层 |阅读模式
本帖最后由 wasay 于 2011-4-21 22:13 编辑

语句:  printf("i=%d\n",(1<<2));

和另一组语句:
          i=2;
         printf("i=%d\n",(1<<i));

这两组语句printf出的结果是不一样的,分别是 i=1024  和i=4


不知道这个怎么解释。。。。。
xlsbz 发表于 2011-4-21 22:08 | 显示全部楼层
printf是啥 不杂会用。

printf这个函数 变量个数不定  所以用得时候要小心
 楼主| wasay 发表于 2011-4-21 22:15 | 显示全部楼层
printf : C语言里的屏幕输函数。
ayb_ice 发表于 2011-4-22 10:43 | 显示全部楼层
本帖最后由 ayb_ice 于 2011-4-22 10:47 编辑

printf 对于格式有严格要求,不奇怪,所以C++里做了重大改进
做好强制声明应该可以的
printf("i=%d\n",(int)(1<<2));
不过没有测试
后面一个结果正确,是因为KEIL的自动整型提升在起作用(变量i的原因),而前面的需要强制转换
test22222 发表于 2011-4-22 10:47 | 显示全部楼层
很好很强大
原野之狼 发表于 2011-4-22 11:25 | 显示全部楼层
听4L的,木有问题~
 楼主| wasay 发表于 2011-4-22 22:37 | 显示全部楼层
强大的4楼。

实测 用强制类型OK。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

27

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部