• <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>

            勤能補(bǔ)拙,Expter

            成都游戲Coder,記錄游戲開發(fā)過程的筆記和心得!

            一些學(xué)習(xí)筆記 ,陷阱,缺陷

             


            1、關(guān)于初始化:

            deque<string> Deque;// 一個deque容器

            deque
            <string> Deque2(Deque.begin(),Deque.end());                // 一種初始化

            copy(Deque.begin(),Deque.end(),back_inserter(Deque2) );         
            // 一種初始化

            deque
            <string> Deque3(istream_iterator<string>(cin),istream_iterator<string>()); // 一種初始化
              現(xiàn)在討論第三種初始化方式,
            typedef istream_iteraor<string> (Func)();

            deque
            <string> Deque3(istream_iteraotr<string> cin, Func);  
            看上去像一個函數(shù)聲明,

            typedef istream_iteraor
            <string> (Func)();
            deque
            <string> f(stream_iteraor<string> ,Func);
            現(xiàn)在比較清晰了吧,很像一個函數(shù)聲明了,

            所以第三種初始化方式根本就不能做任何事情.

            //如果真的要達(dá)到初始化的目標(biāo),可以通過括號來消除二義性
            deque<string> Deque3( (istream_iterator<string> (cin)) , istream_iterator<string>() );

            通過加括號來提示編譯器我們這里提供的是構(gòu)造函數(shù)的參數(shù)而非參數(shù)聲明,因?yàn)?(istream_iterator<string> (cin))  不能解析為變量聲明,這個更void f ( (int i)) 不可能是函數(shù)聲明是一回事。多一對括號不可能解釋為合法的聲明語句。


            2.關(guān)于double 和float 區(qū)別

            一個例子
            int main()
            {

              
            double  x = 1e8;
              
              
            while(x >0)
                  x
            --;


               
            return 0;
            }


             

            現(xiàn)在的編譯器一秒就可能運(yùn)行完成,
            如果吧doubel x = 1e8 ,換為 float x = 1e8;
             C++標(biāo)準(zhǔn)說 :
             浮點(diǎn)類型有三種: float ,double, long double,關(guān)于精度很顯然
            如果換成float 答案很詭異,因?yàn)槿Q于float的精度,能否表達(dá)0 1e8區(qū)間的整數(shù)

            所以如果換為 float,可能運(yùn)行一秒,也可能是死循環(huán),因?yàn)槿绻鹒loat不能表達(dá)0 1e8區(qū)間的整數(shù), 因?yàn)槠渲?n-1 = n (由于浮點(diǎn)精度不夠)



            3. 一些拼寫代碼錯誤

            #include <iostream>
            #include 
            <iomanip>

            using namespace std;

            int main()
            {
                
            int x = 1;
                
            for (int i =0 ; i < 100; i++)
                
            {
                    ;
                }


                
            //  下面這行代碼會干些什么?遞增???????/
                ++x;
                std::cout 
            << x << std::endl; 
                
            return 0;
            }


              一個支持標(biāo)準(zhǔn)c++的編譯器答案輸出是 1
              原因很詭異,因?yàn)橛袀€有趣的是:注釋末尾‘??/’會被轉(zhuǎn)換為'\' ,寫個宏的都知道這個就是換行符,所以??/換轉(zhuǎn)換為\ ,而++x就相當(dāng)于粘貼到注釋行的末尾 ,所以++x.,不會起作用,是注釋的一部分。

            在看一個例子:
            一個符號標(biāo)準(zhǔn) c++的編譯器會報(bào)多少錯誤。
            struct X 
            {
                
            static bool f(int *p)
                
            {
                    
            return p &&0[p] and not p[1:>>p[2];
                }

            }
            ;

            先一步一步的分析
            1:0[p] 其實(shí)和p[0]一樣
            2: and not都是有效關(guān)鍵字 ,他們分別是&& 和!
            3::>竟然也是合法的,他是]的雙字符寫法。

            所以這個語句會被解析為 return p && p[0] && !p[1]>p[2] ,沒有語法錯誤。
            很詭異。

             

            posted on 2009-03-08 14:05 expter 閱讀(1873) 評論(5)  編輯 收藏 引用 所屬分類: 其他學(xué)習(xí)筆記工作筆記生活筆記面試筆記算法與數(shù)據(jù)結(jié)構(gòu)

            評論

            # re: 一些學(xué)習(xí)筆記 ,陷阱,缺陷 2009-03-09 09:42 Kevin Lynx

            第三個確實(shí)詭異,不過C支持那樣的代碼是有原因的:
            http://en.wikipedia.org/wiki/C_trigraph#C
            為了支持一些沒有\(zhòng)符號的鍵盤。  回復(fù)  更多評論   

            # re: 一些學(xué)習(xí)筆記 ,陷阱,缺陷 2009-03-09 19:01 guest

            我使用VC6和VC2008編譯最后一個例子,都會出錯。
            不知問題出在哪?  回復(fù)  更多評論   

            # re: 一些學(xué)習(xí)筆記 ,陷阱,缺陷 2009-03-30 15:06 expter

            @guest
            DEV 可以編譯通過。。。  回復(fù)  更多評論   

            # re: 一些學(xué)習(xí)筆記 ,陷阱,缺陷 2009-04-05 14:14 longe

            vs 2008第三個出錯,,不詭異噠  回復(fù)  更多評論   

            # re: 一些學(xué)習(xí)筆記 ,陷阱,缺陷 2009-04-05 20:39

            @longe

            用DEV 可以編譯通過。。。  回復(fù)  更多評論   

            国产精品一区二区久久国产| 免费精品久久久久久中文字幕| 精品久久人人爽天天玩人人妻| 一级A毛片免费观看久久精品| 久久精品国产亚洲av麻豆图片 | 久久精品国产99久久无毒不卡| 久久99精品久久久久久动态图| 亚洲精品高清久久| 亚洲一区精品伊人久久伊人| 久久亚洲私人国产精品vA| 99久久精品免费观看国产| 久久婷婷午色综合夜啪| AV色综合久久天堂AV色综合在| 久久亚洲精品无码播放| 久久久久亚洲AV无码永不| 久久中文字幕视频、最近更新 | 九九久久精品国产| 亚洲午夜久久久影院| 国产激情久久久久影院小草 | 亚洲国产精品无码久久久不卡| 亚洲国产精品久久久久| 精品人妻伦九区久久AAA片69| 久久AAAA片一区二区| 精品无码久久久久久尤物| 久久久久亚洲av成人网人人软件 | 麻豆av久久av盛宴av| 亚洲国产成人久久综合一| 久久久久亚洲av无码专区| 国产精品久久久久久久久久影院 | 久久久久亚洲国产| 国产精品欧美久久久久无广告| 久久久久久亚洲精品成人| 久久精品国产亚洲AV香蕉| 亚洲性久久久影院| 一本久久精品一区二区| 久久精品国产亚洲5555| 99久久精品免费观看国产| 中文字幕成人精品久久不卡| 狠狠狠色丁香婷婷综合久久俺| 精品蜜臀久久久久99网站| 久久久久亚洲AV片无码下载蜜桃 |