[英]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.