我有一个很奇怪的问题。本来我的代码是这样的。(看第7行就行了)
#include <bits/stdc++.h>
using namespace std;
int a[5];
char b,c;
int main()
{
while (scanf("%c:=%c;",&b,&c) == 2)
{
a[b-'a'] = (c >= '0' && c <= '9' ? c-'0' : a[c-'a']);
}
printf("%d %d %d\n",a[0],a[1],a[2]);
return 0;
}
但如果改成这样:
#include <bits/stdc++.h>
using namespace std;
int a[5];
char b,c;
int main()
{
while (scanf("%c:=%c;",&b,&c) != -1)
{
a[b-'a'] = (c >= '0' && c <= '9' ? c-'0' : a[c-'a']);
}
printf("%d %d %d\n",a[0],a[1],a[2]);
return 0;
}
程序就会警告3221225477(访问了野指针),为什么呢?