求助大佬帮忙看看,新人刚学
本帖最后由 15974432466 于 2022-11-14 13:09 编辑#include <stdio.h>
int main() {
int num = 9;
printf("%d", (++num) + (num++) * (num--));
return 0;
}
这个程序输出是120,但是不应该是110吗?++num为10,并且将num赋为10,num++和num++为10,10+10*10=110
很不懂求助,感谢大佬 本帖最后由 jackz007 于 2022-11-14 13:16 编辑
此题涉及非确定性行为,结果会因编译器的不同而有所不同,因而,没有讨论价值
【tdm-gcc 5.1.0】:
D:\\C>g++ -o x x.c
D:\\C>x
120
D:\\C>
tdm-gcc 5.1.0 编译版本程序的运行结果是 120
【VC9.0】:
D:\\C>cl x.c
用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 15.00.30729.01 版
版权所有(C) Microsoft Corporation。保留所有权利。
x.c
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.All rights reserved.
/out:x.exe
x.obj
D:\\C>x
110
D:\\C>
VC9.0 编译版本程序的运行结果是 110
所以,根本没有必要讨论。 jackz007 发表于 2022-11-14 13:12
此题涉及非确定性行为,结果会因编译器的不同而有所不同,因而,没有讨论价值
【tdm-gcc...
谢谢大佬,感谢解疑
页:
[1]