• <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>
            隨筆 - 51, 文章 - 1, 評(píng)論 - 41, 引用 - 0
            數(shù)據(jù)加載中……

            printf(“0x02x”,data[i])的問題

            遇到如下代碼:

            #include <stdio.h>
            int main() {
                const char data[] = {0x12, 0x80, 0x40};
                int i;
               
                for (i=0; i<sizeof(data)/sizeof(data[0]); ++i) {
                    printf("%02X, ", data[i]);
                }
                return 0;
            }

            輸出結(jié)果為:12, FFFFFF80, 40,

            期望結(jié)果應(yīng)該是:12, 80, 40,

            雖然知道是無(wú)符號(hào)有符號(hào)整型類型提升的問題,但也花了不少時(shí)間理順其邏輯。

            1. 首先printf的可變參數(shù)期望是int型,因此data[i]會(huì)提示至int。

            2. data[i]為char型,提升時(shí)會(huì)帶符號(hào),0x80表示-128,而int型表示為0xFFFFFF80。

            3. %02X表示長(zhǎng)度小于2用0填充,而不是截?cái)酁殚L(zhǎng)度2。

            問題的根源在于data的定義不嚴(yán)謹(jǐn),應(yīng)該定義為unsigned char。

            posted on 2014-06-18 22:25 lemene 閱讀(1060) 評(píng)論(0)  編輯 收藏 引用


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


            四虎国产精品免费久久| 久久er热视频在这里精品| 午夜视频久久久久一区| 久久受www免费人成_看片中文| 久久亚洲精品国产精品婷婷| 狠狠精品久久久无码中文字幕| 99久久国产热无码精品免费| 久久影视国产亚洲| 狠狠狠色丁香婷婷综合久久五月| 婷婷国产天堂久久综合五月| 久久精品人人槡人妻人人玩AV| 久久婷婷五月综合成人D啪 | 久久免费视频网站| 久久久久久久久久久| 久久国产精品久久久| 久久丫精品国产亚洲av不卡 | 久久99精品国产99久久6男男| 久久青青色综合| 亚洲综合久久夜AV | 国产—久久香蕉国产线看观看 | 久久精品99久久香蕉国产色戒 | 久久99热狠狠色精品一区| 色偷偷偷久久伊人大杳蕉| 中文字幕无码久久人妻| 免费一级做a爰片久久毛片潮| 99久久亚洲综合精品成人| 久久婷婷五月综合97色| 色偷偷久久一区二区三区| 久久天天躁狠狠躁夜夜2020一| 性高湖久久久久久久久AAAAA| 久久www免费人成精品香蕉| 国产福利电影一区二区三区久久久久成人精品综合| 亚洲精品乱码久久久久久自慰| 亚洲中文字幕无码久久综合网| 久久久久国产精品嫩草影院| 国产成人久久精品一区二区三区 | 色悠久久久久久久综合网| 精品久久久久久99人妻| 久久久精品日本一区二区三区| 久久高潮一级毛片免费| 亚洲国产成人久久精品99|