为什么 x - x 在 C 语言的 putchar() 中什么都不是?
why x - x is nothing in putchar() in c language?
在下面的代码中,如果我输入 11(1 和 1),输出为:[]1。 [] 部分不是垃圾,我只是用符号(“[]”)来表示空输出。因此,如果在 1 前面,则实际输出只是 1,其中一个为空 space。
int main(void)
{
int x = 1;
char y = 1;
x = getchar();
y = getchar();
x = x - x;
putchar(x);
putchar(y);
}
此外,如果我替换 x = x - x;至
x -= 3;
并输入 11 或 22,它会给我类似 *1 或 /2 的输出。
为什么会这样?
谢谢。
您必须考虑 ASCII 值。当你执行 x = x - x 时,你说的是 x = 0(我输入的任何字符的 ascii 代码 x 减去它本身总是 0)
然后在 ASCII table 中查找 0,您将看到 null。所以它会打印 null(看起来像 space)和 1.
当您执行 x -= 3; 时,您将获取您输入的字符的数字 ASCII 代码,然后减去 3。如果您查看 ASCII table,您会注意到字符 1 之前的 3 个字符是 *,字符 2 之前的三个字符是 /。这解释了您得到的结果。
如果你想把字符转换成它所代表的数值,有很多方法可以做到这一点,你可以减'0'或者在C中将char转换成字符串后使用atoi函数。
-'0'方法
int numeric = x - '0';
atoi 方法需要 a conversion to string.
char str[2] = "[=11=]";
str[0] = x;
int numeric = atoi(str);
如果您输入的是非数字字符,例如一个
在下面的代码中,如果我输入 11(1 和 1),输出为:[]1。 [] 部分不是垃圾,我只是用符号(“[]”)来表示空输出。因此,如果在 1 前面,则实际输出只是 1,其中一个为空 space。
int main(void)
{
int x = 1;
char y = 1;
x = getchar();
y = getchar();
x = x - x;
putchar(x);
putchar(y);
}
此外,如果我替换 x = x - x;至
x -= 3;
并输入 11 或 22,它会给我类似 *1 或 /2 的输出。
为什么会这样?
谢谢。
您必须考虑 ASCII 值。当你执行 x = x - x 时,你说的是 x = 0(我输入的任何字符的 ascii 代码 x 减去它本身总是 0)
然后在 ASCII table 中查找 0,您将看到 null。所以它会打印 null(看起来像 space)和 1.
当您执行 x -= 3; 时,您将获取您输入的字符的数字 ASCII 代码,然后减去 3。如果您查看 ASCII table,您会注意到字符 1 之前的 3 个字符是 *,字符 2 之前的三个字符是 /。这解释了您得到的结果。
如果你想把字符转换成它所代表的数值,有很多方法可以做到这一点,你可以减'0'或者在C中将char转换成字符串后使用atoi函数。
-'0'方法
int numeric = x - '0';
atoi 方法需要 a conversion to string.
char str[2] = "[=11=]";
str[0] = x;
int numeric = atoi(str);
如果您输入的是非数字字符,例如一个