簡體   English   中英

下面的代碼是否將字符轉換為ASCII值?

[英]Is the code below converting a character into its ASCII value?

下面的代碼是否將字符轉換為ASCII值?
在研究后綴操作的評估時,我遇到了一段代碼,其中說“表達式將C中的一位數字字符轉換為其數值”。

int x=getch();  
int c=x-'0';      /*does c have the ASCII value of x?*/
printf("%d",c);  

不,它將ASCII值轉換為大於等於0的數字。

假設您輸入“ 1”。 getch()將返回49,這是ASCII值“ 1”。 49-'0'與49-48相同(48是'0'的ASCII值)。 這給你1。

請注意,如果您輸入的字符不是數字,則該代碼將被破壞。
例如,如果您輸入“ r”,它將打印'r' - '0' = 114 - 48 = 66

參考

不,它給出的是數字的數值。 因此,“ 5”(ASCII中的53)變為5。

下面的代碼是否將字符轉換為ASCII值?

不是。 相反(將ASCII值轉換為數字值),並且僅適用於十進制數字。

要打印ascii值,您需要做的是:

int x=getch();  
printf("%d",x); 

如果您確定只希望接受整數作為輸入,則需要在對輸入進行一些限制之前進行處理。

int x = getch();
if (x >='0' || x <= '9') {
    int c = x - '0'; // c will have the value of the digit in the range 0-9 
    . . .     
}

用單引號引起來的任何字符(在您的情況下為數字)都被編譯為其ASCII值。 上面代碼段中的以下行翻譯為:

int c = x-'0'; ---> int c = x-48; // 48是ASCII值'0'

當用戶向程序輸入任何字符時,它將被轉換為整數,如下所示:

如果x ='1',則ASCII'1'= 49,因此c = 49-48 = 1

如果x ='9',則ASCII'9'= 57,因此c = 57-48 = 9,依此類推。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM