• <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, 評論 - 41, 引用 - 0
            數據加載中……

            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;
            }

            輸出結果為:12, FFFFFF80, 40,

            期望結果應該是:12, 80, 40,

            雖然知道是無符號有符號整型類型提升的問題,但也花了不少時間理順其邏輯。

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

            2. data[i]為char型,提升時會帶符號,0x80表示-128,而int型表示為0xFFFFFF80。

            3. %02X表示長度小于2用0填充,而不是截斷為長度2。

            問題的根源在于data的定義不嚴謹,應該定義為unsigned char。

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

            久久99精品久久只有精品| 久久亚洲国产最新网站| 国产精品天天影视久久综合网| 国产成人久久精品区一区二区| 国产韩国精品一区二区三区久久| 91精品久久久久久无码| 伊人久久综合无码成人网| 久久精品免费大片国产大片| 国产成人久久AV免费| 国产无套内射久久久国产| 91精品日韩人妻无码久久不卡| 亚洲国产精品无码久久青草| 久久婷婷综合中文字幕| .精品久久久麻豆国产精品| 久久久久99精品成人片三人毛片 | 99久久夜色精品国产网站| 国产99久久精品一区二区| 精品无码久久久久国产动漫3d| 久久久久成人精品无码| 精品久久久无码人妻中文字幕豆芽 | 国产激情久久久久影院老熟女| 久久亚洲熟女cc98cm| 久久强奷乱码老熟女网站| 久久亚洲精品中文字幕三区| 一本久久a久久精品vr综合| 久久九色综合九色99伊人| 久久久精品免费国产四虎| 久久国产色AV免费观看| 久久精品国产一区| 韩国三级中文字幕hd久久精品| 久久综合色区| 伊人久久久AV老熟妇色| 久久婷婷色香五月综合激情| 人人狠狠综合久久亚洲| 久久精品人人做人人爽电影| 久久久久久国产a免费观看不卡| 久久这里只精品国产99热| 亚洲午夜久久久精品影院| 99久久精品国产毛片| 亚洲午夜久久久精品影院| 国产 亚洲 欧美 另类 久久 |