对于输入1234,输出为134.这里发生了什么?当我在这种情况下打印[1]时它什么都不打印。
#include <iostream>
using namespace std;
int main() {
char a[100];
cin >> a;
a[1] = a[1] - '0';
cout << a;
return 0;
}
答案 0 :(得分:7)
'0'
是指可打印字符0,在ASCII中转换为值48. '2'
的值为50,因此从48减去50会产生2,即文本开头字符。此字符不会转换为可打印字符,因此cout
不会打印它。
答案 1 :(得分:2)
当我在这种情况下打印1时,它什么都不打印。
参考ASCII table,字符'2'是0x32,字符'0'是0x30
a[1] = '2'; // a[1] is ASCII character 2
a[1] = a[1] - '0'; // a[1] now is 2 (numeric)
它不会打印任何内容,因为ASCII代码2是不可打印的ASCII代码。
答案 2 :(得分:1)
不是134
1+(特殊字符)+3 + 4
因为1234是字符数组
a[1] = 2
char中的成为
a[1] = 50 // The Ascii equivalent to a[1]
&#39; 0&#39; ascii值是48
所以
a[1] = 50 - 48
所以[1]成为2
,可能会也可能不会在屏幕上打印出来。
答案 3 :(得分:1)
'0'的ASCII值为48,这里用字符而不是数字数减去。在你的代码中,你将'0'减去索引1
char a[100]
数组
所以你得到了
a [1] = 50 - 48
这是2。
Char中的2是ETX(文本结尾),不能用字符表示
所以你得到134的输出。取决于你的编译器如何处理输出。
有些编译器可以输出一些特殊字符。
答案 4 :(得分:0)
当您输入的是1234
时 a[1]='2'
当你减去&#39; 0&#39;形式&#39; 2&#39;你得到2这是ascii开始的文本所以基本上 a [1] =文本开头; 它不会在屏幕上打印任何内容
因此a = 1 34