C/C++ 合法整數與字符


一、C語言中的合法整型

首先C語言中的整型有三種表示方式:十進制、八進制和十六進制。(C語言中沒有表示二進制的整型)

 

十進制:

如 int a = 63; //一個正常的整型 

 

八進制:

如果想用8進制對變量進行賦值則這樣

 int a = 077; //八進制給整型賦值 

數字0開頭,由0~7組成

 

十六進制:

 int a = 0x3F; //十六進制給整型賦值 

以0x開頭,由0~F組成

所以我們對合法整數的判斷,可以首先從進制判斷入手,

  1. 若以0開頭,則為八進制,不能出現大於等於8的數字;
  2. 若以0x開頭,則為十六進制,數字的范圍為0~F;
  3. 若都不是,則為十進制,要求數字為0~9。

二、C語言中的合法字符

C語言中的字符常量要求以單引號 ' ' 括起來,否則為非法字符。

除了直接表示的字符外,部分為轉義字符比如

'\n'    // 換行
'\t'    // 制表
'\\'    // 斜桿
'\"'    // 引號

還有一部分為用八進制或十六進制整型表示的字符,在對應數值前加上斜杠,注意C語言規定不允許使用斜杠加十進制表示字符!

'?'    // 直接表示的?字符
'\x3F'    // 十六進制表示的?字符
'\077'    // 八進制表示的?字符

字符的數值表示時,前面的0可以省略,比如 '\x3F' 其實為 '0x3F' ,而 '\077' 可以寫成 '\77' (不區分大小寫)

!!但,類型為整型時,前面的0則不能省略

  1. 合法字符必須用單引號括起來
  2. 除了直接表示,某些特殊字符需要進行轉義,比如斜杠和引號
  3. 通過斜杠加數值可以表示字符,但只能用十六進制和八進制表示
  4. 如果沒有x,且出現了大於等於8的數,則為非法字符

 -例

1 int main(){
2     int x = 108, y = 012;
3     printf("%2d, %2d\n", x, y);
4     return 0;
5 }

先是x,%2d表示寬域(不足則前補空格)108長度大於2,所以直接輸出。

然后y,有些人會以為輸出為12,或是012。

其實不然,這里以0開頭,表示八進制。而輸出格式為%2d,十進制,所以正確的結果為10。

輸出為

1 108, 10

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM