首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

++a,a++的纳闷

2012-09-18 
++a,a++的困惑各位大虾,小弟菜鸟,今天自己写一个程序时发现了一个问题,自己搞不明白,特此求助!代码如下:in

++a,a++的困惑
各位大虾,小弟菜鸟,今天自己写一个程序时发现了一个问题,自己搞不明白,特此求助!
代码如下:
int _tmain(int argc, _TCHAR* argv[])
{
int a=10,b=10;

printf("%d--",++a);
printf("%d--",a++);
printf("%d\n",a);
printf("%d--%d--%d\n",++b,b++,b);

return 0;

}
得到的结果:
11--11--12
12--10--12
求解释,分不多,拜谢!

[解决办法]
前两个搞清楚就可以了
printf("%d--%d--%d\n",++b,b++,b);
属于未定义行为,结果未知
[解决办法]
printf("%d--%d--%d\n",++b,b++,b);

注意printf的参数处理顺序问题
语言标准并没有进行规定

所以呢,不要去预测编译器的行为
因为那是编译器的自由

这种写代码的方式,是不符合代码规范的
[解决办法]
补充一下,printf()函数是从右往左计算表达式的,但输出时是从左到右输出

热点排行