• <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>
            隨筆-60  評論-98  文章-0  trackbacks-0
            最近在處理超大文件,用到了DWORD64

            期望用戶將偏移量以DWORD64的形式傳進(jìn)來,然后我調(diào)用WindowsAPI進(jìn)行定位,讀取文件,返回

            這是CB下的測試結(jié)果,沒有報錯,只給你返回一個錯誤的結(jié)果
            1// 是測試DWORD64右移32位會出現(xiàn)什么狀況
            2DOWRD64 dw6403 = 1024*1024*1024;
            3DWORD64 dw6404 = 2*1024*1024*1024;
            4UINT uTmp = 6403>>32// 0
            5uTmp = 6404>>32;      // oxFFFFFFFF

            // CB下編譯通過,結(jié)果正確
            1// 目的同上
            2DWORD64 dw641G = 1024*1024*1024;
            3DWORD64 dw6404 = 2*dw641G ;
            4UINT uTmp = dw6404>>32// 0

            結(jié)論:是兩家的編譯器在預(yù)編譯的時候,不允許數(shù)值超過1G。
            posted on 2010-02-02 20:09 創(chuàng)建更好的解決方案 閱讀(1882) 評論(9)  編輯 收藏 引用 所屬分類: C++專欄內(nèi)存專題

            評論:
            # re: Visual Studio VS C++Builder07 不同的公司,同樣的Bug 2010-02-02 20:21 | 創(chuàng)建更好的解決方案
            // 更為離譜的事情發(fā)生了,同為10*1024*1024的兩個數(shù)值,由于一個是成員變量,一個是臨時變量,右移之后結(jié)果居然不同

            DWORD64 dw64Tmp = m_dw64FileSize;
            UINT dwTmp2 = (m_dw64FileSize>>32); // 還是10*1024*1024
            UINT dwTmp1 = (dw64Tmp>>32); // 0  回復(fù)  更多評論
              
            # re: Visual Studio VS C++Builder07 不同的公司,同樣的Bug[未登錄] 2010-02-02 23:14 | clear
            64位字面常量后面要加LL
            否則數(shù)字按照32位,乘法使用32位,結(jié)果溢出了。

            所以,這個不是編譯器bug。  回復(fù)  更多評論
              
            # re: Visual Studio VS C++Builder07 不同的公司,同樣的Bug 2010-02-03 10:42 | coolypf
            請問您懂匯編嗎?  回復(fù)  更多評論
              
            # re: Visual Studio VS C++Builder07 不同的公司,同樣的Bug 2010-02-03 11:38 | 空明流轉(zhuǎn)
            Literal Constant Suffix “L”啊同學(xué)。。。  回復(fù)  更多評論
              
            # re: Visual Studio VS C++Builder07 不同的公司,同樣的Bug 2010-02-03 12:06 | 創(chuàng)建更好的解決方案
            @clear
            2*1024*1024*1024,距離32位溢出,還有50步呢  回復(fù)  更多評論
              
            # re: Visual Studio VS C++Builder07 不同的公司,同樣的Bug 2010-02-03 13:56 | 試試其他的
            32位機(jī)器上整形最大是2^31 - 1。
            2*1024*1024*1024 溢出了。

            2LL*1024*1024*1024 才不溢出。明白?

            clear 的說法是正確的。 這么點屁事別放首頁。  回復(fù)  更多評論
              
            # re: Visual Studio VS C++Builder07 不同的公司,同樣的Bug 2010-02-03 14:38 | 創(chuàng)建更好的解決方案
            @試試其他的
            int和unsigned int表達(dá)范圍一樣嗎?
              回復(fù)  更多評論
              
            # re: Visual Studio VS C++Builder07 不同的公司,同樣的Bug 2010-02-05 13:20 | 喜樂遞官方網(wǎng)站
            愛上的卡就是覺得  回復(fù)  更多評論
              
            # re: Visual Studio VS C++Builder07 不同的公司,同樣的Bug 2010-02-05 16:50 | 試試其他的
            @創(chuàng)建更好的解決方案
            當(dāng)然不一樣了。
            至于int和unsigned int范圍可以參見limits.h
            里面有INT_MIN,INT_MAX和UINT_MAX  回復(fù)  更多評論
              
            国产精品久久久久a影院| 国产精品美女久久久免费| 久久人搡人人玩人妻精品首页| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 国产亚洲美女精品久久久久狼| 狠狠色婷婷综合天天久久丁香| 国产69精品久久久久99| 亚洲国产成人久久一区久久| 色综合久久无码五十路人妻| 久久青草国产手机看片福利盒子| 精品久久久久久久久久久久久久久 | 久久久久一级精品亚洲国产成人综合AV区| 国产 亚洲 欧美 另类 久久| 中文字幕热久久久久久久| 91精品无码久久久久久五月天| 色诱久久av| 一本大道加勒比久久综合| 久久精品国产精品亚洲精品 | 99久久精品免费看国产| 国内精品九九久久精品| 中文字幕成人精品久久不卡| 91精品国产高清久久久久久io| 久久久国产亚洲精品| 久久99精品久久久久久9蜜桃| 蜜臀av性久久久久蜜臀aⅴ麻豆| 久久精品亚洲乱码伦伦中文| 7国产欧美日韩综合天堂中文久久久久| 国内高清久久久久久| 久久夜色精品国产噜噜亚洲a| 精品久久久久久国产三级| 狠狠色丁香久久综合婷婷| 99热成人精品热久久669| 久久久久久久久久久久中文字幕 | 久久99精品久久久久久hb无码 | 久久亚洲精品无码aⅴ大香 | 99久久精品国产一区二区三区| 国内精品久久久久影院优| 久久精品亚洲精品国产色婷 | 久久综合综合久久狠狠狠97色88| 日日躁夜夜躁狠狠久久AV| 久久精品一本到99热免费|