• <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)  編輯 收藏 引用

            青青草原综合久久大伊人导航| 久久人妻少妇嫩草AV无码专区| 精品久久人人做人人爽综合| 91精品国产高清91久久久久久| 91精品国产高清久久久久久国产嫩草| 麻豆精品久久精品色综合| 久久精品成人免费观看97| 97视频久久久| 久久久久久狠狠丁香| 综合久久一区二区三区| 精品久久久久久成人AV| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久久久亚洲精品无码网址| 久久久精品人妻一区二区三区蜜桃 | 国产精品久久亚洲不卡动漫| 亚洲欧美日韩久久精品| 久久青青草原精品影院| 久久香蕉国产线看观看精品yw| 国产综合精品久久亚洲| AV无码久久久久不卡蜜桃| 久久久亚洲欧洲日产国码是AV| 久久国产精品免费一区二区三区| 蜜臀久久99精品久久久久久小说| 欧美日韩精品久久久免费观看| 91精品观看91久久久久久| 韩国免费A级毛片久久| 性高湖久久久久久久久| 99久久香蕉国产线看观香| 午夜福利91久久福利| 性做久久久久久久久| 久久久精品人妻无码专区不卡| 国产午夜精品理论片久久影视| 人妻无码中文久久久久专区| 国产69精品久久久久9999APGF | 青青草国产成人久久91网| 久久99国内精品自在现线| 久久久久AV综合网成人| 久久精品99久久香蕉国产色戒| 亚洲中文字幕久久精品无码喷水| 精产国品久久一二三产区区别 | 亚洲欧美久久久久9999|