• <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 閱讀(1030) 評論(0)  編輯 收藏 引用

            久久夜色精品国产亚洲av| 东京热TOKYO综合久久精品| 韩国三级中文字幕hd久久精品 | 夜夜亚洲天天久久| 精品一久久香蕉国产线看播放| 国产精品日韩欧美久久综合| 久久久久无码国产精品不卡| 色偷偷88888欧美精品久久久| 久久99精品国产99久久6男男| 欧美久久天天综合香蕉伊| 浪潮AV色综合久久天堂| 久久国产乱子伦精品免费午夜| 亚洲中文字幕无码久久综合网| 久久久久噜噜噜亚洲熟女综合| 亚洲精品蜜桃久久久久久| 久久久人妻精品无码一区| 2021久久精品国产99国产精品| 欧美久久一级内射wwwwww.| 国产精品久久网| 久久精品国产清高在天天线| 久久久久无码专区亚洲av| 日本精品久久久中文字幕 | jizzjizz国产精品久久| 国产精品久久久香蕉| 久久久久久久亚洲精品| 国产日韩欧美久久| 久久久久久久99精品免费观看| 色狠狠久久AV五月综合| 色综合合久久天天给综看| 久久精品国产一区二区三区| 18岁日韩内射颜射午夜久久成人| 国产精品久久久久无码av| 久久国产精品99精品国产| 久久综合给合久久狠狠狠97色 | 中文成人无码精品久久久不卡| 国产69精品久久久久9999| 久久精品9988| 久久久WWW成人| 久久久久亚洲av成人网人人软件| 久久精品国产久精国产果冻传媒| 久久天天婷婷五月俺也去|