下面的代碼是否將字符轉換爲其ASCII值?
我面對一段代碼而學習後綴運算,它說:「表達在C語言的單個數字字符轉換爲它的數字值」。評價?下面的代碼是否將字符轉換爲其ASCII值?
int x=getch();
int c=x-'0'; /*does c have the ASCII value of x?*/
printf("%d",c);
下面的代碼是否將字符轉換爲其ASCII值?
我面對一段代碼而學習後綴運算,它說:「表達在C語言的單個數字字符轉換爲它的數字值」。評價?下面的代碼是否將字符轉換爲其ASCII值?
int x=getch();
int c=x-'0'; /*does c have the ASCII value of x?*/
printf("%d",c);
不,這是ASCII值轉換爲數字> = 0
比方說,你輸入 '1'。 getch()
將返回49,這是'1'的ASCII值。 49 - '0'與49 - 48相同(48是'0'的ASCII值)。它給你1
請注意,如果您輸入的字符不是數字的代碼被打破。
例如如果你輸入 'R',將打印'r' - '0'
= 114 - 48
= 66
(Ref。)
對不起,它不會將ASCII值轉換爲數字> = 0.嘗試使用0x24,'$'作爲x中的值。根據ASCII,$的值爲0x24,'0'的值爲0x30。減法的結果是否定的。 –
那麼,它的目標就是做到這一點。正如我指出的那樣,代碼被破壞了。 –
不,它給一個數字的數值。所以'5'(ASCII中的53)變爲5.
感謝您的回覆。 所以殘培()返回字符的ASCII值,然後將其存儲在** X **,並減去** 0 **我得到的人物的數值value..please糾正我,如果我錯了! ..? – RishiB
下面的代碼是否將字符轉換爲其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是「0」
當用戶輸入任何字符到你的程序的ASCII值,它被轉換爲整數作爲跟隨,
如果x =「1」,的ASCII「1」 = 49,所以C = 49-48 = 1
如果x = '9',的 '9'= 57 ASCII,所以C = 57-48 = 9等。
「** digit **的數值」!= ASCII值。 – Jon
您正在對字符0的x值進行減法....如果您運行此代碼,您會看到這一點。 –
嘗試輸入這些字符:'$'和'A'。 –