LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1143|回复: 3

C语言++i,--i,i++,i--的迷惑

[复制链接]
发表于 2009-5-23 11:42:34 | 显示全部楼层 |阅读模式
根据谭浩强的C程序设计中的一个例子
main()
{
        int i=8;
        printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
}
输出的结果,按右至左,应是8,7,7,8

为什么我在linux下编译后结果却是8,8,7,8
不解?
请大家指点一二:help
发表于 2009-5-23 16:03:19 | 显示全部楼层
不推荐这些写在一个表达式中,因为这样的话是和编译器相关的,不同的编译器会有不同的实现
回复 支持 反对

使用道具 举报

发表于 2009-5-26 09:15:26 | 显示全部楼层
楼上的回答很有理,编译器计算语句的顺序并不是固定的,只能有优先级保证,
在同一行对同一个变量进行两次以上的操作在不同编译器下行为是不一样的,
有一本书,好像叫 《[C++ | C ] PROGRAMMING STYLE 》里好像有说这个问题。
忘记是C 还是C++了,好像是C++,你看看吧。
回复 支持 反对

使用道具 举报

发表于 2009-5-29 20:09:05 | 显示全部楼层
不同的编译器,会有不同的结果
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表