问答题

简答题

下面C语言程序经非优化编译后,若运行时输入2,则结果是area=12.566360,addr=-1073743076
经优化编译后,若运行时输入2,则结果是area=12.566360,addr=-1073743068
请解释为什么输出结果有区别。

【参考答案】

使用非优化编译时,变量s,pi,r在局部数据区都分配4个字节的空间。使用优化编译时,由于复写传播,pi*r*r变成3.1......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)