跃2.0 2017-02-18 12:33 采纳率: 40%
浏览 1218
已采纳

c语言又有最新版本出现了么,一个代码不同编译器答案都不一样,求解答

#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

  • 写回答

2条回答 默认 最新

  • threenewbee 2017-02-18 14:46
    关注

    这个叫做未定义行为(undefined behavior)
    http://blog.csdn.net/fangyi86/article/details/6008395
    不同的编译器对于语言规范没有规定的情形,可以编译出不同的结果。
    自增自减运算放在同优先级的四则运算表达式中就是一个典型的未定义行为。
    再比如说数组越界、变量初始值、函数参数求值顺序等等都可以算未定义行为。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?