我编写了这个 C++ 代码,它编译时没有错误,但是在我有错误之后。我怎样才能使这项工作?
int main() {
int a=0;
for(a=0;a<=9;a+=1)
{
cout<<a<<"\n";
char ssss[] = "hello";
ssss[1]=a;
cout<<ssss<<"\n";
}
return 0;
}
当前输出为:
如果它不符合规范,则只有一个错误。而且,由于您没有提供关于它应该如何操作的规范,我们不得不猜测。
当您通过 将字符设置ssss[1]
为整数值0
时9
,这不是'0'
通过的字符'9'
,而是(至少在 ASCII 中),它是一些控制字符,例如9
水平制表符。
这可能会使您的输出看起来很奇怪。
您可以清楚地看到这一点,对于 0,您得到的只是h
(因为 0 是字符串终止符)。
对于 1 到 4 和 6,您会看到十六进制代码输出。5是ENQ
角色,所以我不确定那在做什么。7 是 ASCII 响铃字符,因此您应该希望听到哔声,8 是退格,这就是为什么llo
覆盖初始的h
,而 9 是水平制表符,导致进一步的输出从下一个制表位开始。
如果要通过 使用字符, 请将循环更改为:'0'
'9'
for
for (a = '0'; a <= '9'; a++)
按照以下程序:
#include <iostream>
int main (void) {
char str[] = "hello";
for (int code = '0'; code <= '9'; code++) {
str[1] = code;
std::cout << code << ": " << str << '\n';
}
return 0;
}
输出:
48: h0llo
49: h1llo
50: h2llo
51: h3llo
52: h4llo
53: h5llo
54: h6llo
55: h7llo
56: h8llo
57: h9llo
这将执行并给出这样的输出
0 h
1 hllo
2 hllo
3 hllo
4 hllo
5 hllo
6 hllo
7 hllo
8 hllo
9 h llo
这是因为当 a = 0 时,它会在末尾分配一个空字符,因此输出仅为 h。并在 9 处放置一个\t
(制表符),因为 9 的 ASCII 等同于制表符。