首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个关于c语言语句的小疑点

2013-03-14 
一个关于c语言语句的小问题#include stdio.hint main(){ int a3,b 5a+bgetch()return 0}以上这段

一个关于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

[解决办法]
引用:
a+b的值被放到一个临时的寄存器里面 ,然后就被丢弃了。

那是理论情况,实际是直接被编译器优化掉了,等于没有哪条语句。

热点排行