下面的代码将字符转换为其ASCII值

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

本文关键字:ASCII 转换 字符 代码      更新时间:2023-10-16

下面的代码是否将字符转换为其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,这是'1'的ASCII值。49 - '0'与49 - 48相同(48是'0'的ASCII值)。结果是1.

请注意,如果您输入的字符不是数字,则此代码将被破坏。
例如,如果您输入'r',它将打印'r' - '0' = 114 - 48 = 66

(Ref)。

不,它给出的是一个数字的数值。所以'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是'0'的ASCII值

当用户向程序输入任何字符时,它将被转换为整数,如下所示,

如果x = ' 1 ', ' 1 '的ASCII = 49岁,所以c = 49-48 = 1

如果x = '9', '9'的ASCII值= 57,则c= 57-48 = 9,依此类推