关于C语言源代码如何运行问题? 400 报错
我是一个初学者,问下a=1;
printf("%d%d%d",a++,a++,a++);
请求解析
这个结果跟编译器的运算优先级有关,不同平台编译器可能能不一样,
GCC 4.8 的运算顺序是 从右到左 所以会输出 321
######这种代码是有歧义的,GCC结果是 3 2 1,clang的结果是 1 2 3,Visual C/C++ 111,你再加一句printf("%d",a);
结果是4。
这是编译器处理方式的差异,参数处理的顺序不一样 优先级不一样,这种代码应该要少用或者不用。
这个结果跟编译器的运算优先级有关,不同平台编译器可能能不一样,
GCC 4.8 的运算顺序是 从右到左 所以会输出 321
类似的问题,前些阵子我也问过,可以看这里http://www.oschina.net/question/562215_173831
不过最好先不要理会设我的最佳答案,最好看一下@PYPlus 的回答。
另外,推荐看一下《C与指针》的5.4.4节,即优先级和求值的顺序。
######运算顺序问题,虽然我用手机打字,但是我已经知道答案,3,2,1######C程序设计语言(第2版) 2.12 运算符优先级与求值次序
类似地,C语言也没有指定函数各参数的求值顺序。因此,下列语句
printf("%d %d\n", ++n, power(2, n));
在不同的编译器中可能会产生不同的结果,......
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。