一个关于c语言语句的小问题
#include <stdio.h>
int main()
{
int a=3,b = 5;
a+b;
getch();
return 0;
}
以上这段代码在vs里编译并没有报错,也可以执行,但是问题是a+b的值算出来之后被丢弃了还是被存储了?如果存储了,存储在了哪里?这中间是一个怎样的过程?求解答! c
[解决办法]
#include <stdio.h>
int main(void)
{
80483b4:55 push %ebp
80483b5:89 e5 mov %esp,%ebp
80483b7:83 ec 10 sub $0x10,%esp
int a=3, b=5;
80483ba:c7 45 f8 03 00 00 00 movl $0x3,-0x8(%ebp)
80483c1:c7 45 fc 05 00 00 00 movl $0x5,-0x4(%ebp)
a+b; // do nothing
return 0;
80483c8:b8 00 00 00 00 mov $0x0,%eax
}
80483cd:c9 leave
80483ce:c3 ret
80483cf:90 nop
[解决办法]
那是理论情况,实际是直接被编译器优化掉了,等于没有哪条语句。