青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

一個(gè)沒有返回值的函數(shù)

如果在返回值為int的函數(shù)里,漏掉return,會(huì)發(fā)生什么情況?

編譯工具:Code::Blocks 10.05,代碼如下所示


#include 
<cstdio>

int f() 
{
}
int main ()
{

    printf(
"%d ",f());
    printf(
"%d ",f());
    printf(
"%d ",f());

    
return 0;
}
編譯時(shí),提示
In function 'int f()':|
warning: no return statement in function returning non-void|
但是能編譯

Debug版本下結(jié)果如下:
1 2 2
Release版本下結(jié)果
0 0 0

下面分析一下為什么為發(fā)生這種情況:

從code:: blocks里面看到的 函數(shù)f的匯編代碼
00401318    push   %ebp
00401319    mov    %esp,%ebp  //正確的似乎是 mov %ebp %esp
0040131B    leave
0040131C    ret
如果函數(shù)f()如下定義
int f()
{
    
return 100;
}
則匯編代碼是
00401318    push   %ebp
00401319    mov    %esp,%ebp
0040131B    mov    $
0x64,%eax
00401320    leave
00401321    ret
接下來我們看一下整個(gè)main函數(shù)的匯編代碼
00401322    push   %ebp
00401323    mov    %esp,%ebp
00401325    and    $0xfffffff0,%esp
00401328    sub    $0x10,%esp
0040132B    call   
0x401770 <__main>
00401330    call   0x401318 <f()>
00401335    mov    %eax,0x4(%esp)
00401339    movl   $0x403024,(%esp)
00401340    call   0x4019ac <printf>
00401345    call   0x401318 <f()>
0040134A    mov    
%eax,0x4(%esp)//將返回值傳遞給%esp+0x04
0040134E    movl   $0x403024,(%esp)
00401355    call   0x4019ac <printf>
0040135A    call   
0x401318 <f()>
0040135F    mov    
%eax,0x4(%esp)
00401363    movl   $0x403024,(%esp)
0040136A    call   
0x4019ac <printf>
0040136F    mov    $
0x0,%eax
00401374    leave
00401375    ret


從中我們可以看出,函數(shù)f()是將返回值通過EAX寄存器中,傳遞給調(diào)用它的代碼。
如過我們漏掉了return intVal語句,在Debug模式下可能會(huì)導(dǎo)致,調(diào)用f()的代碼得到的是上次的其他函數(shù)被調(diào)用的返回值。
在進(jìn)入main之后EAX通常會(huì)被初始化為0x01.所以第一個(gè)f() 返回值為1.
printf 打印了“1 ”兩個(gè)字符之后,返回值為2,所以第二個(gè)f()返回值為2。
printf 打印了“2 ”兩個(gè)字符之后,返回值為2,所以第三個(gè)f()返回值為2。


在Release版本下,函數(shù)f()被優(yōu)化,printf直接打印數(shù)字0。
 
  401320:    push   %ebp
  
401321:    mov    %esp,%ebp
  
401323:    and    $0xfffffff0,%esp
  
401326:    sub    $0x10,%esp
  
401329:    call   0x401760
  40132e:    movl   $
0x0,0x4(%esp)
  
401335:    
  
401336:    movl   $0x403024,(%esp)
  40133d:    call   
0x40199c
  
401342:    movl   $0x0,0x4(%esp)
  
401349:    
  40134a:    movl   $
0x403024,(%esp)
  
401351:    call   0x40199c
  
401356:    movl   $0x0,0x4(%esp)
  40135d:    
  40135e:    movl   $
0x403024,(%esp)
  
401365:    call   0x40199c
  40136a:    xor    
%eax,%eax
  40136c:    leave  
  40136d:    ret      

posted on 2010-07-18 01:06 role0523 閱讀(5166) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導(dǎo)航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆檔案

搜索

最新評(píng)論

  • 1.?re: i++與++i
  • @role0523
    基本上是沒有去區(qū)別的,有時(shí)候++i能被優(yōu)化掉,但很多時(shí)候編譯器能發(fā)現(xiàn)他們是一樣的,所以沒有區(qū)別。
  • --chaogu
  • 2.?re: i++與++i
  • @chaogu
    忘記在誰的blog上看到在比較i++和++i哪個(gè)操作更高效,于是就看看他們匯編指令的條數(shù)。其實(shí)大多數(shù)時(shí)候都是一樣的。
  • --role0523
  • 3.?re: 數(shù)組越界的陷阱
  • @陳梓瀚(vczh)
    嵌入式項(xiàng)目中 vector還是比較慎用的
  • --role0523
  • 4.?re: 數(shù)組越界的陷阱
  • 不如用vector代替你的if
  • --陳梓瀚(vczh)
  • 5.?re: i++與++i
  • 用匯編表達(dá)了一個(gè)很早就被默認(rèn)了的定理,好還是不好呢?
  • --chaogu

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区三| 欧美国产三级| 中文av一区二区| 亚洲国产91精品在线观看| 99视频一区二区三区| 黑人巨大精品欧美一区二区小视频| 欧美激情性爽国产精品17p| 国产精品视频999| 麻豆精品在线播放| 欧美日韩岛国| 亚洲男人av电影| 欧美亚洲一区二区三区| 1024精品一区二区三区| 久久精品在线免费观看| 六月丁香综合| 亚洲欧洲一区二区三区久久| 一区二区自拍| 欧美精品videossex性护士| 99国产精品自拍| 久久综合图片| 久久久青草青青国产亚洲免观| 欧美日韩精品系列| 欧美成人免费播放| 久久国内精品自在自线400部| 午夜免费日韩视频| 一区二区三区国产| 嫩模写真一区二区三区三州| 久久狠狠亚洲综合| 国产午夜精品久久久| 一片黄亚洲嫩模| 亚洲一区二区免费| 国产精品福利在线观看网址| 一本久久知道综合久久| 亚洲激情视频网| 免播放器亚洲| 亚洲乱码国产乱码精品精可以看| 在线看成人片| 女女同性精品视频| 亚洲电影自拍| 日韩视频免费观看高清完整版| 另类激情亚洲| 亚洲日本在线观看| 午夜亚洲性色福利视频| 国产精品久久综合| 午夜影院日韩| 欧美激情综合色| 在线一区免费观看| 国产日韩亚洲欧美| 免费在线看一区| 亚洲少妇中出一区| 久久精品亚洲国产奇米99| 狠狠久久亚洲欧美| 国产精品激情av在线播放| 日韩系列欧美系列| 欧美sm视频| 久久综合给合久久狠狠色| 亚洲欧美激情视频| av成人毛片| 亚洲色无码播放| 99re6热只有精品免费观看| 欧美jizz19hd性欧美| 正在播放亚洲一区| 精品91在线| 黄色成人av网站| 国产精品欧美日韩久久| 欧美激情一二三区| 欧美成人免费视频| 另类亚洲自拍| 久久一区欧美| 免费久久99精品国产自在现线| 欧美综合二区| 久久久久9999亚洲精品| 亚洲欧美国产制服动漫| 亚洲专区欧美专区| 亚洲一区黄色| 欧美在线高清视频| 久久国产精品久久久久久| 欧美一级专区| 另类图片综合电影| 欧美日韩一区二区三区高清| 欧美久久久久久蜜桃| 欧美日韩国产免费观看| 国产精品久久久久国产精品日日 | 久久九九国产精品| 久久深夜福利免费观看| 亚洲国产精品第一区二区三区| 亚洲电影免费在线观看| 夜久久久久久| 久久综合色婷婷| 欧美日韩亚洲国产一区| 国产精品一区二区欧美| 亚洲国产日韩一区二区| 中文av字幕一区| 久久综合五月天婷婷伊人| 亚洲黄色一区| 久久国产精品一区二区| 欧美剧在线观看| 国产亚洲福利| 性欧美videos另类喷潮| 久久综合图片| 久久精品国产成人| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美成人午夜免费视在线看片| 亚洲大胆视频| 看欧美日韩国产| 亚洲国产99| 亚洲欧美日韩一区二区三区在线| 久久久国产精品一区二区中文 | 欧美日本亚洲视频| 国产一区二区中文字幕免费看| 亚洲国产三级| 你懂的成人av| 午夜在线一区二区| 国产精品美女久久久免费| 亚洲精品国偷自产在线99热| 久久国产精品网站| 午夜日韩电影| 激情久久久久久| 久久久亚洲国产天美传媒修理工| 亚洲一区尤物| 国产一区二区三区免费不卡 | 亚洲日本国产| 欧美日韩八区| 亚洲综合首页| 亚洲综合第一| 黄色成人在线免费| 久久综合久色欧美综合狠狠| 欧美一二区视频| 亚洲国产婷婷| 99视频一区二区| 国产亚洲欧美日韩美女| 欧美—级高清免费播放| 亚洲永久字幕| 久久国产黑丝| 一区二区三区国产盗摄| 一本久久a久久精品亚洲| 亚洲另类视频| 国产欧美日韩视频| 久久亚洲精品网站| 欧美日韩hd| 久久亚洲综合| 欧美成在线观看| 久久精品日韩欧美| 欧美大成色www永久网站婷| 亚洲一区免费视频| 久久视频这里只有精品| 亚洲欧美日韩直播| 欧美 日韩 国产在线| 亚洲综合久久久久| 免费观看成人www动漫视频| 亚洲在线视频网站| 欧美激情一区二区三区在线视频| 欧美在线国产精品| 欧美三级电影一区| 亚洲激情六月丁香| 在线观看欧美黄色| 欧美一区二区三区在线视频 | 欧美mv日韩mv国产网站app| 国产精品久久999| 日韩视频在线你懂得| 亚洲欧洲日夜超级视频| 理论片一区二区在线| 裸体一区二区| 亚洲国产老妈| 美女国产精品| 亚洲国产成人精品视频| 亚洲人久久久| 欧美美女日韩| 一区二区三区视频免费在线观看| 亚洲午夜在线| 国产精品久久中文| 香蕉久久一区二区不卡无毒影院| 欧美一区二区播放| 国内一区二区三区在线视频| 久久成人资源| 亚洲精品九九| 久久精品国产精品亚洲| 一色屋精品视频在线看| 欧美极品在线视频| 午夜精品久久久久久久99热浪潮| 久久色中文字幕| 麻豆精品在线观看| 妖精成人www高清在线观看| 久久aⅴ国产紧身牛仔裤| 国内精品一区二区三区| 免费日韩av| 欧美激情日韩| 久久精品视频免费| 一本色道久久99精品综合| 国产乱码精品一区二区三区忘忧草| 久久久久一区| 欧美一级二级三级蜜桃| 亚洲激情午夜| 欧美成人精品在线观看| 香蕉av福利精品导航| 亚洲精品综合久久中文字幕| 国产午夜亚洲精品不卡| 国产欧美精品xxxx另类| 欧美调教vk| 欧美视频不卡中文|