【发布时间】:2016-03-25 05:09:38
【问题描述】:
#include <iostream>
using namespace std;
int main(){
int n,i;
cin>>n;
cout<<n<<endl;
for(i=0;i<n;i++){
char x[3];
cin>>x;
cout<<x<<' '<<i<<endl;
}
return 0;
}
如果我输入为上述程序
2
X++
--X
输出结果是
2
X++ 0
--X 0
--X 1
我希望是这样的
2
X++ 0
X-- 1
后来我明白了错误是什么并将char x[3]替换为char x[4],因为字符串被null终止。但是为什么上面的程序会这样工作(我知道 C 不会因为溢出而抛出错误)。
【问题讨论】:
-
您不能将
"X++"存储在char [3]中,您需要一个额外的单元格用于nul 字符。 -
未定义的行为。
-
“我知道 C 不会因溢出而引发错误” 这不是真的。 C 没有定义然后要做什么,但是编译器/运行时可以选择来抛出错误。此外,C 不是 C++,您使用的是 C++。