#include
int main()
{
int a = 2;
printf("--a + a--:%d a-- + a--:%d\n",--a+a--,a--+a--);
}
codeblocks上是 -2 4
手机c4是 2 -1
但是正确的好像是 -3 3
c语言又有最新版本出现了么,一个代码不同编译器答案都不一样,求解答
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
threenewbee 2017-02-18 14:46关注这个叫做未定义行为(undefined behavior)
http://blog.csdn.net/fangyi86/article/details/6008395
不同的编译器对于语言规范没有规定的情形,可以编译出不同的结果。
自增自减运算放在同优先级的四则运算表达式中就是一个典型的未定义行为。
再比如说数组越界、变量初始值、函数参数求值顺序等等都可以算未定义行为。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报