printf格式化输出i++,i--的一个疑惑?
#include <stdio.h>void main(){
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
}以上程序输出的结果为什么是以下结果啊:
8
8
7
8
-7
-8
哪位大虾能讲解一下吗?
为什么不是下面这个结果咧:
9
8
8
9
-8
-9
{:7_174:}不用纠结这个。我用VC6运行的结果就跟你的不同。
编译器不同结果不同。这样写没什么实际意义。 编译器不同,如果你懂汇编,可以把它转成汇编代码来看~
就可以明白了~~~~~~~~ 结果对着了,你想错了,printf这个函数有个特点,从左往右显示,但是从右往左计算,当然这个确实和编译器有关,看我的结果:
又是这个问题~ 在论坛里搜i++ 大把答案~~几乎每个初学者都遇到过~ printf 是从右向左计算的,先是-i--,-i++,i--。这样算就对了。 本帖最后由 牡丹花下死做鬼 于 2013-8-8 13:59 编辑
拜托啊 大家怎么都这么纠结这个呢
用郝斌老师的话 i++ i-- ++i --i 都写成一个独立的语句那样 --i = i-- ++i = i++ 就不用纠结了
写出楼主你这样 有实际意义吗??而且编译器还有自左向右和自右向左的区别 还有编译优化的问题 ......
有时候#include<stdio.h>
void main()
{
int i = 5,j = 0;
j = i++ + i++ + i++;
printf("%d\n",j);
}输出的结果是15 这就是编译优化的结果 据说是先加起来 得到J在自增I
反正这玩意事情很多的
我是建议想郝斌老师说的写成一个独立的语句那就万事大吉了 无聊的问题,你只要知道不会有人在实际开发的时候这样写,就算是再牛逼的程序员,也不会马上知道的。 真心建议楼主看看我的帖子:http://bbs.fishc.com/forum.php?mod=viewthread&tid=35615&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline
申请最佳啊 这个问题吧是因为这样滴:printf()函数的执行规律是从右至左的,也就是先算-i--,然后-i++,i--,i++,--i,++i 编译器不同结果不同,只要知道怎么算就行,在使用中避免,和编写器有关的写法! 总纠结 ++ 这个东西的连用,没啥劲。
多看其他的代码,比这个实际 讲过的呀,从右向左运算的结果 格式天下 发表于 2013-7-30 19:35
结果对着了,你想错了,printf这个函数有个特点,从左往右显示,但是从右往左计算,当然这个确实和编译器有 ...
从右往左计算也不对啊!
页:
[1]