我写了以下程序:
#include<stdio.h>
int main(){
printf("%x\n");
printf("%x\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道它是未定义的行为,我只是检查发生了什么.编译器是gcc.
样本输出是:
541d3118
7ffffff7
Run Code Online (Sandbox Code Playgroud)
另一个示例输出是:
e0b08078
7ffffff7
Run Code Online (Sandbox Code Playgroud)
当我使用-O3flag 编译它时,结果是:
5ec20f18
9
Run Code Online (Sandbox Code Playgroud)
和
3bedfa08
9
Run Code Online (Sandbox Code Playgroud)
为什么第一个值会改变,而不是第二个值?为什么高优化级别的第二个值不同?
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |