打印

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

[复制链接]
2162|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的原因),而前面的需要强制转换

使用特权

评论回复
5
test22222| | 2011-4-22 10:47 | 只看该作者
很好很强大

使用特权

评论回复
6
原野之狼| | 2011-4-22 11:25 | 只看该作者
听4L的,木有问题~

使用特权

评论回复
7
wasay|  楼主 | 2011-4-22 22:37 | 只看该作者
强大的4楼。

实测 用强制类型OK。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

27

帖子

1

粉丝