奇怪的越界问题。
- C/C++ code
#include<iostream> using namespace std; int main() { int n,a[11]; cin >> n; while(n--) { int t =0; char ch; for(int i =0;i<11;++i) { ch = getchar(); if(ch=='a'||ch=='b'||ch=='c') a[t++]=2; if(ch=='d'||ch=='e'||ch=='f') a[t++]=3; if(ch=='g'||ch=='h'||ch=='i') a[t++]=4; if(ch=='j'||ch=='k'||ch=='l') a[t++]=5; if(ch=='m'||ch=='n'||ch=='o') a[t++]=6; if(ch=='p'||ch=='q'||ch=='r'||ch=='s') a[t++]=7; if(ch=='t'||ch=='u'||ch=='v') a[t++]=8; if(ch=='w'||ch=='x'||ch=='y'||ch=='z') a[t++]=9; } for(int i=0;i<10;++i) cout << a[i] ; //这个循环不是应该只能输出10位吗?怎么变成11位了,如果改成i<11就越界了 cout << endl; } return 0; }[解决办法]
理论上,既然定义了int a[11],那么a[10]就没有越界
如果报错,那应该是其他地方出了问题