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

隨筆-5  評論-31  文章-0  trackbacks-0
今年要開始找工作了,本著積累經(jīng)驗的目的,跑去做了下MTK的筆試題,筆試的內(nèi)容主要是C++。
因為開發(fā)中一直使用C++,而且對C++里的高級特性:面向?qū)ο螅0宓榷急容^熟悉,還沒事喜歡研究下STL,BOOST,所以對自己的C++水平比較自信,因此事先也沒做任何準(zhǔn)備,就直接去筆試了。本來筆試完了后覺得題目蠻簡單的,但是本著認(rèn)真學(xué)習(xí)的態(tài)度回來后把題目都上機(jī)試驗了下,結(jié)果一下就悲劇了,錯的體無完服啊。。。
總結(jié)了一下:
   1。認(rèn)真對待,不要小看了筆試題目:做題的時候心想這些筆試題目都很簡單啊,很多題目都是掃了一眼就立即寫出了答案,結(jié)果回來后才發(fā)現(xiàn)這些題目都設(shè)置了陷阱,讓你掉進(jìn)去就出不來了。
   2。C++基礎(chǔ)不夠扎實。枉我還一天到晚的研究C++的高級特性,結(jié)果很多基礎(chǔ)的知識卻都是一知半解。
特將此次筆試的一些心得和體會記錄于此,好提醒自己。下面主要分析幾個我做錯的題目。題目并非與原題完全一致。
題目一:
int a=10,b=6;
cout
<<a+b<<" "<<a++<<" "<<b++

請說出上述語句的執(zhí)行結(jié)果。
很多人看過這段代碼后估計都會直接就寫上了 16 10 6 這樣的結(jié)果吧,但上機(jī)實驗的輸出結(jié)果是: 18 10 6
為什么會出現(xiàn)這樣的結(jié)果,下面是我的分析過程,如果有不對的地方請大家指正。
為了跟蹤代碼的執(zhí)行步驟,我設(shè)計了一個類X,這個類是對int的模擬,行為方面與int基本一致,除了會打印出一些幫助我們理解的信息,代碼如下:

class X
{
public:
    X(){cout
<<"default construct"<<endl;}
    X(
int a):i(a){ cout<<"construct "<<i<<endl;}
    
~X(){ cout<<"desconstruct "<<i<<endl;}
    X(
const X& x):i(x.i)
    {
        cout
<<"copy construct "<<i<<endl;
    }
    X
& operator++()
    {
        cout
<<"operator ++(pre) "<<i<<endl;
        
++i;
        
return *this;
    }
    
const X operator++(int)
    {
        cout
<<"operator ++(post) "<<i<<endl;
        X x(
*this);
        
++i;
        
return x;
    }
    X
& operator=(int m)
    {
        cout
<<"operator =(int)"<<endl;
        i 
= m;
        
return *this;
    }
    X
& operator=(const X& x)
    {
        cout
<<"operator =(X)"<<endl;
        i
=x.i;
        
return *this;
    }
    
/////////////////////////
    friend ostream& operator<<(ostream& os,const X& x)
    {
        os
<<x.i;
        
return os;
    }
    friend X 
operator+(const X& a,const X& b)
    {
        cout
<<"operator +"<<endl;
        return X(a.i+b.i);
    }
    
//////////////////////////
public:
    
int i;
};

然后執(zhí)行以下代碼:

    X a(10),b(6);
    cout
<<"sum:" <<a+b<<" a:"<<a++<<" b:"<<b++<<endl;

使用GCC4。5編譯后,代碼的執(zhí)行結(jié)果如下:

construct 10
construct 6
operator ++(post) 6
copy construct 6
operator ++(post) 10
copy construct 10
operator +
construct 18
sum:18 a:10 b:6
desconstruct 18
desconstruct 10
desconstruct 6
desconstruct 7
desconstruct 11
我們來簡單分析下這個執(zhí)行過程:

construct 10
construct 6  //這兩行輸出對應(yīng)于 X a(10),b(6); 

operator ++(post) 6
copy construct 6 //表明首先執(zhí)行了  cout<<"sum:" <<a+b<<" a:"<<a++<<" b:"<<b++<<endl;這句中的 b++這個表達(dá)式,
                              b++這個表達(dá)式返回了一個值為6的臨時對象,而b本身則變成了7。
operator ++(post) 10
copy construct 10  //這句的分析同上

operator +
construct 18 //對應(yīng)于表達(dá)式 a+b ,可以看到,此時的a和b已經(jīng)變成了11和7。表達(dá)式返回了一個值為18的臨時對象。

sum:18 a:10 b:6 //輸出的結(jié)果,從結(jié)果可以看出,實際上打印出的值分別為 a+b,a++和b++三個表達(dá)式所返回的臨時變量。

desconstruct 18 //a+b 表達(dá)式返回的臨時變量的析構(gòu)
desconstruct 10 //a++ 表達(dá)式返回的臨時變量的析構(gòu)
desconstruct 6 //b++表達(dá)式返回的臨時變量的析構(gòu)
desconstruct 7 //變量a 的析構(gòu)
desconstruct 11  //變量b的析構(gòu)

真相大白了。為什么編譯器會這樣來編譯這個表達(dá)式呢?
下面2樓的夜風(fēng)同學(xué)給出了正確答案。。為了不誤導(dǎo)后面的同學(xué),特此編輯掉。。

上述實驗的環(huán)境均為GCC4。5  據(jù)同學(xué)說VS2010執(zhí)行的結(jié)果在DEBUG下和RELEASE下居然分別為:16 10 6 和18 10 6,不過我沒有去驗證過,有興趣的同學(xué)可以去驗證并分析一下。
做這樣一道題還是讓我收獲很多,鞏固了C++的基礎(chǔ)。
今天就寫道這里,后面有時間會陸續(xù)放出對其他“陷阱”題目的分析。
(未完待續(xù))

posted on 2011-08-13 17:30 江浸月 閱讀(3320) 評論(19)  編輯 收藏 引用

評論:
# re: 做MTK筆試的總結(jié)(一)--C++ 運算符優(yōu)先級 2011-08-13 19:50 | pansunyou
確實輸出不同的結(jié)果:

[VS2008] cl.exe 15.00.21022.08 DEBUG輸出16 10 6
[VS2008] cl.exe 15.00.21022.08 RELEASE輸出18 10 6
[UNIX SCO] CC 3.1 09/28/99 DEBUG/RELEASE輸出18 10 6
gcc version 4.1.2 20070115 DEBUG/RELEASE輸出18 10 6
  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一)--C++ 運算符優(yōu)先級 2011-08-13 21:00 | 夜風(fēng)
<<在同一語句中連續(xù)使用,其實本質(zhì)上是函數(shù)的復(fù)合調(diào)用
cout<<a+b<<" "<<a++<<" "<<b++;
本質(zhì)上是
operator<<(operator<<(operator<<(cout,a+b),a++),b++)
由于c函數(shù)參數(shù)傳遞順序是從右至左,所以參數(shù)的計算次序是:
b++ //7
a++ //11
a+b //18
cout<<18
cout<<11 //應(yīng)該是10,因為已經(jīng)先入棧了
cout<<7 //應(yīng)該是6  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一)--C++ 運算符優(yōu)先級 2011-08-13 21:19 | right
盡管這種問題有確定的答案,但是實際上永遠(yuǎn)不要寫這種代碼。  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一)--C++ 運算符優(yōu)先級 2011-08-13 21:47 | 江浸月
@夜風(fēng)
原來如此,受教了。不過最后應(yīng)該是
b++ //7
a++ //11
a+b //18
cout<<18
cout<<10
cout<<6
才對。  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-13 23:31 | 瘋狂的面包
http://blog.csdn.net/luciferisnotsatan/article/details/6456696
我來給大家一個鏈接 很好解析這個問題  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一)[未登錄] 2011-08-14 16:03 | a
題目也太水了吧。
第一題 就是 UB.
  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-14 19:04 | 俺不是壞人
未定義行為,結(jié)果多少都是正確的。  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-14 19:38 | 狂接
UB吧  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-14 21:34 | ccsdu2009
這樣的題目 只能說蛋疼  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-15 09:38 | 各個
這種題純粹就是坑爹的,出這種題的人就是一SB  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一)[未登錄] 2011-08-15 12:39 | Chipset
可以看出出題的人根本不懂C/C++,這樣的公司不去也罷。  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-15 22:58 | 夜風(fēng)
@江浸月
哦,對的,10和6已經(jīng)入棧了  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-15 23:07 | 夜風(fēng)
@Chipset
不見的,有可能題目的用意在于考察是否理解<<操作符的函數(shù)形式,還有函數(shù)參數(shù)入棧順序,如果這樣理解,還是比較有技術(shù)含量的  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-15 23:13 | 夜風(fēng)
@夜風(fēng)
如果不理解,還真有可能出現(xiàn)大問題,我曾經(jīng)就遇到過一個問題,后來看匯編代碼時才回憶起<<的二元函數(shù)形式  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-17 00:32 | 艸,蛋疼
在VC10上release才是16 10 6!






































  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-17 12:40 | dougulf
正確答案應(yīng)該是:未定義行為!
還問這種題目,如果面試的人期待的不是“未定義行為”的答案的話,只能說面試的人是在拿自己曾經(jīng)出過的丑事讓別人出丑而已。
  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-29 15:02 | 夢在天涯
MKT現(xiàn)在還在找?。?nbsp; 回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-08-29 15:52 | song
在HP C/aC++ B3910B A.06.15
試驗了下是16 10 6
  回復(fù)  更多評論
  
# re: 做MTK筆試的總結(jié)(一) 2011-09-30 11:36 | chencj
1、C函數(shù)參數(shù)的計算順序是不確定的,可以在C99文檔中找到(72頁),因此不同的編譯器處理可能會不一樣
The order of evaluation of the function designator, the actual arguments, and
subexpressions within the actual arguments is unspecified, but there is a sequence point
before the actual call.
2、這里的operator<<不是全局的二元操作符,而是ostream的成員運算符,一般是要重載自定類的<<操作符時,才會定義全局的二元操作符,而這里的cout是ostream。
即cout<<a+b<<a++<<b++; 本質(zhì)上是:
((cout.operator<<(a+b)).operator<<(a++)).operator<<(b++);
3、二樓的夜風(fēng)是正解
以上供探討。  回復(fù)  更多評論
  

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


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精选成人| 夜夜躁日日躁狠狠久久88av| 9色精品在线| 亚洲专区欧美专区| 日韩午夜激情| 一本色道久久综合亚洲精品不卡| 91久久黄色| 99在线视频精品| 国产精品99久久久久久久vr| 亚洲专区在线| 欧美亚洲视频一区二区| 欧美一区二区三区四区在线| 久久爱91午夜羞羞| 欧美**字幕| 亚洲精品日韩在线| 亚洲自拍偷拍网址| 久久在线视频在线| 欧美日韩一级大片网址| 国产精品国产三级国产aⅴ9色| 国产婷婷精品| 亚洲国产日韩一区| 亚洲一区视频| 麻豆成人91精品二区三区| 亚洲国产福利在线| av成人免费在线| 欧美中文字幕在线播放| 欧美连裤袜在线视频| 国产婷婷97碰碰久久人人蜜臀| 亚洲精品黄网在线观看| 久久成人综合网| 亚洲精品久久久久| 久久精品人人做人人爽电影蜜月| 欧美日韩成人综合在线一区二区| 国产一区二区激情| 亚洲视频每日更新| 亚洲高清视频在线观看| 久久国产精品久久久久久电车| 欧美日韩亚洲一区三区| 亚洲国产小视频| 久久欧美肥婆一二区| 99精品99| 欧美日本高清| 亚洲人午夜精品| 久久综合国产精品| 亚洲欧美日韩精品在线| 欧美日韩另类综合| 亚洲精品日本| 男女视频一区二区| 亚洲欧美日本视频在线观看| 欧美视频在线观看一区二区| 亚洲日本va在线观看| 麻豆国产精品一区二区三区| 午夜免费日韩视频| 国产女主播在线一区二区| 亚洲小视频在线| 亚洲人午夜精品免费| 免费中文日韩| 亚洲国产日本| 另类天堂av| 久久九九全国免费精品观看| 亚洲精品乱码久久久久久蜜桃91| 国模私拍一区二区三区| 亚洲欧美日韩中文视频| 日韩一级大片| 欧美久久婷婷综合色| 亚洲每日在线| 亚洲精品中文在线| 欧美精品免费播放| 日韩香蕉视频| 亚洲精品欧洲| 国产精品99免费看 | 久久精品视频一| 亚洲一区视频在线| 国产深夜精品| 久久婷婷人人澡人人喊人人爽| 欧美亚洲免费电影| 精品1区2区3区4区| 欧美成人四级电影| 欧美日本久久| 欧美一区二区日韩| 久久久久亚洲综合| 亚洲日本黄色| 中文无字幕一区二区三区| 国产欧美日韩精品专区| 美国成人毛片| 免费h精品视频在线播放| 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品免费视频观看| 欧美一区日韩一区| 久久久久国产一区二区三区| 亚洲国产一区二区三区高清| 亚洲另类春色国产| 国产精品一区在线播放| 免费在线日韩av| 欧美午夜不卡在线观看免费| 久久精品综合网| 欧美男人的天堂| 久久久欧美一区二区| 欧美激情一级片一区二区| 欧美一区二区免费| 欧美极品aⅴ影院| 久久久久久97三级| 欧美日韩午夜在线视频| 久久激情五月激情| 欧美另类一区二区三区| 久久精品国产99国产精品澳门| 欧美成人免费全部| 久久这里只精品最新地址| 欧美视频一区二区三区| 欧美www视频| 国产伦精品一区二区三区| 国产精品久久中文| 欧美一级一区| 在线视频欧美日韩| 久久久久久亚洲精品不卡4k岛国| 亚洲视频一二| 久久婷婷久久| 性18欧美另类| 欧美日韩一区精品| 欧美激情五月| 一区二区三区在线不卡| 亚洲一区视频| 亚洲综合精品一区二区| 模特精品在线| 欧美成人免费va影院高清| 国产一区二区三区在线观看视频| 亚洲手机视频| 亚洲午夜国产成人av电影男同| 男人的天堂亚洲在线| 欧美成人a视频| 激情小说亚洲一区| 欧美有码视频| 久久九九久久九九| 国产伦精品一区二区三区免费| 99视频一区二区| 亚洲视频在线免费观看| 欧美午夜视频在线观看| 亚洲美女福利视频网站| 亚洲精品美女久久久久| 美国三级日本三级久久99| 欧美不卡激情三级在线观看| 狠狠色丁香久久综合频道| 欧美在线首页| 女人天堂亚洲aⅴ在线观看| 亚洲国产精品一区二区三区| 久久中文在线| 欧美激情一区二区久久久| 亚洲日本在线观看| 欧美精品一区在线播放| 99在线精品视频在线观看| 亚洲一区美女视频在线观看免费| 欧美精品一区二区三区蜜臀| 亚洲日本中文字幕| 一区二区三区视频在线| 欧美日韩午夜| 欧美一级精品大片| 久久久噜久噜久久综合| 激情久久久久久久| 久久精品夜色噜噜亚洲a∨| 欧美成人黄色小视频| 在线不卡亚洲| 久久视频在线视频| 亚洲精品一线二线三线无人区| 亚洲综合电影一区二区三区| 欧美午夜电影网| 亚洲精品乱码久久久久久久久 | 亚洲一级黄色av| 亚洲女人小视频在线观看| 国产欧美一区二区精品性色| 久久精品国产一区二区三| 欧美激情第1页| 亚洲欧美综合网| 在线观看日韩国产| 欧美婷婷久久| 久久精品国产96久久久香蕉| 亚洲国产综合视频在线观看| 欧美一区二区成人6969| 亚洲人成网站精品片在线观看| 国产精品美女久久久久aⅴ国产馆| 欧美成人69| 亚洲欧美综合网| 亚洲国产成人高清精品| 国产精品国产三级国产普通话99 | 国产精品爱啪在线线免费观看| 亚洲欧美精品suv| 欧美福利一区| 久久国产一区| 亚洲少妇诱惑| 亚洲电影免费观看高清| 国产精品每日更新| 欧美国产视频日韩| 久久嫩草精品久久久精品一 | 免费欧美高清视频| 夜夜嗨一区二区| 免费91麻豆精品国产自产在线观看| 中日韩美女免费视频网站在线观看| 国产一区欧美日韩| 国产精品成人久久久久| 欧美日韩不卡合集视频| 久久综合给合久久狠狠狠97色69|