下面的代码是将字符转换为ASCII值吗?

时间:2011-09-21 16:42:15

标签: c++ c

以下代码是否将字符转换为ASCII值? 我在研究后缀操作的评估时遇到了一段代码,其中它表示“表达式将C中的单个数字字符转换为其数值”。?

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

5 个答案:

答案 0 :(得分:6)

不,它将ASCII值转换为数字> = 0。

假设你输入'1'。 getch()将返回49,这是ASCII值'1'。 49 - '0'与49 - 48相同(48是'0'的ASCII值)。这给你1。

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

Ref。)

答案 1 :(得分:2)

不,它给出了数字的数值。因此'5'(ASCII中为53)变为5。

答案 2 :(得分:1)

  

以下代码是否将字符转换为ASCII值?

不是。它正在做相反的事情(将ASCII值转换为数值),它只适用于十进制数字。

答案 3 :(得分: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 
    . . .     
}

答案 4 :(得分:0)

将单引号括起来的任何字符(在您的案例编号中)编译为其ASCII值。上面代码段中的以下行转换为

int c = x-'0'; ---&GT; 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,依此类推。