以下代码是否将字符转换为ASCII值? 我在研究后缀操作的评估时遇到了一段代码,其中它表示“表达式将C中的单个数字字符转换为其数值”。?
int x=getch();
int c=x-'0'; /*does c have the ASCII value of x?*/
printf("%d",c);
答案 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,依此类推。