要打印的代码
A
B B
C C C
D D D D
E E E E E
#include<iostream>
using namespace std;
int main() {
int j = 70;
char ch = ' ';
int k = 65;
int n = j - k;
for(int i = 1; i <= n; i++) {
for(int m = 1; m <= i; m++) {
ch=(char)(k);
cout<<(k+" ");
}
cout<<endl;
k++;
}
return 0;
}
请确定我在linux(ubuntu)上运行的代码中的错误
答案 0 :(得分:2)
+
是二进制加法运算符,因此在执行(k+" ")
时,实际上是在循环中将65,66,67,68 and 69
添加到" "
的指针地址(字符串文字)中。
这是未定义的行为。
因此替换您的
cout<<(k+" ");
与
cout<<ch<<" ";
答案 1 :(得分:2)
错误在cout<<(k+" ");
行中
为了解释正在发生的事情,我们考虑一下k = 2
和const char [] "bacd"
。
然后2 + "bacd"
与从“ bacd”的第二位置开始具有字符指针相同。
因此cout << k + "bacd";
将打印cd
作为输出。
所以k+" "
等效于第k个位置“ <”的字符指针
答案 2 :(得分:-5)
此行中的错误:
cout<<(k+" ");