首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 字元指標存儲字串:'1' 的 ASCII 碼 49 導致調試顯示困惑

     編輯:程式設計疑難解答

現象:調試器顯示 pstr[i] = "49 '1'",以為是字串 "49"

實際上:'1' 的 ASCII 碼是 49 (0x31)。調試器同時顯示**數值**與**字元字面值**方便查看。

代碼片段


char* pstr = "123+5*6";
// pstr[0] = '1' (ASCII 49)
// pstr[1] = '2' (ASCII 50)
// ...

調試器顯示解讀

顯示含義
49 '1'十進制值 49,對應字元 '1'
50 '2'十進制值 50,對應字元 '2'
43 '+'十進制值 43,對應字元 '+'

驗證代碼


#include 
int main() {
    char c = '1';
    printf("char: %c, dec: %d, hex: 0x%X\n", c, c, c);
    // 輸出:char: 1, dec: 49, hex: 0x31
    return 0;
}

核心概念

  • C/C++ 中 char 本質是 **1 位元組整數**。
  • 字元字面值 'A'、'1'、'+' 在編譯期即轉為對應 ASCII/UTF-8 數值。
  • 調試器為方便開發者,**同時顯示數值與字元**,並非字串 "49"。

避坑提醒

  • 不要用 atoi(pstr[i]) 轉換單字元,直接 pstr[i] - '0' 得數值。
  • 字串結尾 \0 值為 0,調試器顯示 0 '\0'。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved