我编写了这个C ++代码,编译时没有错误,但是在我有bug之后。我怎样才能做到这一点?
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;
}
当前输出为:
答案 0 :(得分:3)
如果不符合规格,则只有一个错误。而且,由于你没有提供规范如何采取行动,我们不得不猜测。
当您将字符ssss[1]
设置为整数值0
到9
时,不字符'0'
到{{1}而是(至少在ASCII中),它是一些控制字符,如'9'
是水平制表符。
这可能会使您的输出看起来很奇怪。
你可以清楚地看到这一点,对于0,你得到9
(因为0是字符串终结符)。
对于1到4和6,您会看到十六进制代码输出。 5是h
字符,所以我不确定它在做什么。 7是ASCII铃声字符,所以你应该听到一声哔哔声,8是退格,这就是ENQ
覆盖初始llo
,9是水平制表符的原因,导致进一步的输出从下面的标签开始停止。
如果您想通过h
使用字符 '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;
}
答案 1 :(得分:1)
这将执行并提供这样的输出
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处它会在{1}}(制表符)中放置一个{1}}(制表符),因为9的ASCII相当于制表符。