下面的代码将字符转换为其ASCII值
Is the code below converting a character into its ASCII value?
下面的代码是否将字符转换为其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,依此类推
相关文章:
- 在C++中使用 ASCII 代码将输入从小写转换为大写
- 我的程序将 26 个字母转换为 ascII 没有显示正确答案
- 我写的 ASCII 到二进制转换器C++向后显示二进制,如何使其正确显示?
- 我正在尝试编写将 ASCII 转换为十进制、添加并转换回 ASCII 的软件
- C++-将ASCII字符数组中可能的数值转换为字符的最简单方法
- 如何将ASCII数字转换为从文件中提取的整数
- 将非 ASCII 字符转换为英语对应字符C++
- 在Qt中将QString转换为ASCII值,反之亦然
- 输出使用 cout 转换为 ASCII 的文本时输出格式不正确,C++
- 如何在不将其转换为 ASCII 字符的情况下显示 QByteArray 的十六进制值
- 如何使用 ASCII 转换使用字符堆栈计算后缀表达式
- C++将 ASCII 转换为莫尔斯电码
- 找到排列的ASCII转换
- c 中的字符串和int的condanation.从ASCII转换为十六进制
- 如何从ASCII转换为字符串或符号
- 从 ASCII 转换回字符
- 将ascii转换为char
- 我如何从ASCII转换到十六进制值,也增加char指针
- 使用c++将ASCII转换成十六进制的无符号int形式
- 将ASCII转换为Unsigned Int,反之亦然