2011-09-21 43 views
0

下面的代碼是否將字符轉換爲其ASCII值?
我面對一段代碼而學習後綴運算,它說:「表達在C語言的單個數字字符轉換爲它的數字值」。評價?下面的代碼是否將字符轉換爲其ASCII值?

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

「** digit **的數值」!= ASCII值。 – Jon

+0

您正在對字符0的x值進行減法....如果您運行此代碼,您會看到這一點。 –

+0

嘗試輸入這些字符:'$'和'A'。 –

回答

6

不,這是ASCII值轉換爲數字> = 0

比方說,你輸入 '1'。 getch()將返回49,這是'1'的ASCII值。 49 - '0'與49 - 48相同(48是'0'的ASCII值)。它給你1

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

Ref。)

+1

對不起,它不會將ASCII值轉換爲數字> = 0.嘗試使用0x24,'$'作爲x中的值。根據ASCII,$的值爲0x24,'0'的值爲0x30。減法的結果是否定的。 –

+0

那麼,它的目標就是做到這一點。正如我指出的那樣,代碼被破壞了。 –

2

不,它給一個數字的數值。所以'5'(ASCII中的53)變爲5.

+0

感謝您的回覆。 所以殘培()返回字符的ASCII值,然後將其存儲在** X **,並減去** 0 **我得到的人物的數值value..please糾正我,如果我錯了! ..? – RishiB

1

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

它不是。它正在做相反的操作(將ASCII值轉換爲數值),它僅適用於十進制數字。

0

要打印的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 
    . . .  
} 
0

單引號內包含的任何字符(在您的情況下編號)將編譯爲其ASCII值。在上面的代碼段下面的行轉換爲,

INT C = X-'0' ; ---> int c = x-48; // 48是「0」

當用戶輸入任何字符到你的程序的ASCII值,它被轉換爲整數作爲跟隨,

如果x =「1」,的ASCII「1」 = 49,所以C = 49-48 = 1

如果x = '9',的 '9'= 57 ASCII,所以C = 57-48 = 9等。

相關問題