為啥給int賦值字元常量沒問題,通過cin輸入字元就會出錯?
輸入數字:
輸入字母:d(圖三)
看到同樣問題的部落格裡大佬的回答
參考10樓:樓主的問題根源在於:你可能認為字母和一些符號才算字元。其實,翻開字元ascii表,你可以看到數字字元也是字元,製表符、換行符、分頁符、空字元之類的也列在其中,也就是說,'a'是字元,'1'同樣是字元,所以輸入字元的時候,你可以輸入a,也可以輸入1,都同樣是乙個字元。但是在輸入整數的時候,你只能輸入一串數字代表乙個整數,如果你輸入的是字母,它無法代表乙個整數,輸入失敗,可能導致後續的輸入無法正常進行,甚至導致後續的程式執行不正常。
自我理解 :圖三輸入d相當於下面的程式
'c'字元常量儲存的是數值99,字母c則沒有指明是字元常量,編譯器不回去對照ascii表
char c_value;
cin>>c_value; //輸入1,『1』本身也是個字元,cin的》可以過載為 輸入字元的》
int i_value;
cin>>i_value;//輸入1,1是整數,cin的》過載為輸入int的》
cin>>i_value;//輸入c, cin需要接受整型,c是個字元,c不能代表整數,不像int i_value=『c』;這個賦值一樣,'c'自動轉化為int(99),反而像 int i_value=c,所以cin的》過載為異常處理的》,返回false,i_value=0。
程式小白,求大佬指正,謝謝大佬們
C 引用變數(1)
建立引用變數 int rats int rodents rats 不是位址運算子,而是型別標示符的一部分。就像宣告中的char 指的是char的指標一樣,int 指的是指向int的引用。int rats 101 int rodents rats int prats rats 表示式rodents和 ...
C語言的變數 1
1.變數的作用範圍 變數分為 全域性變數 和 區域性變數 全域性變數,就是定義在所有函式之外的變數。全域性變數可以被該原始檔內任何函式訪問,其有效範圍從該變數被定義開始到該原始檔結束。c語言中的大括號標識了變數的作用域。在作用域內,變數從被定義開始,到該右花括號結束,是其有效範圍。作用域可以巢狀,但...
C語言入門(1) 變數
變數實質是程式可操作的記憶體區的名稱,c中每個變數都有其特定的資料型別,型別決定了變數儲存區域的大小與布局,即在允許範圍內的值都可以儲存在該記憶體區內。變數的生命週期 變數的生命週期是指變數在程式執行過程中的 有效期 根據生命週期的不同可以將變數分為全域性變數和區域性變數。全域性變數 生命週期為整個...