为什么在c语言中定义变量的位置不同,运行结果也不同?
在scanf之前定义变量,输出结果是错的

#include
int main()
{
int x;
int mask=1;
int t=x;
scanf("%d",&x);
while(t>9){
t/=10;
mask*=10;
}
printf("x=%d,mask=%d\n",x,mask);
int d;
do{
d=x/mask;
printf("%d",d);
if (mask>9){
printf(" ");
}
x%=mask;
mask/=10;
}while(mask>0);
printf("\n");
return 0;
}
在scanf之后定义,结果是对的

#include
int main()
{
int x;
scanf("%d",&x);
int mask=1;
int t=x;
while(t>9){
t/=10;
mask*=10;
}
printf("x=%d,mask=%d\n",x,mask);
int d;
do{
d=x/mask;
printf("%d",d);
if (mask>9){
printf(" ");
}
x%=mask;
mask/=10;
}while(mask>0);
printf("\n");
return 0;
}

这个和mask位置无关,主要是t是由x赋值得到的,而x又是由scanf函数传进去的呀,你可以将其看做流水线,你x没得到t哪来的值呢,没有的话那么程序就随便给你一个呗,如此得到的结果肯定不是你想要的(错的)。所以变量怎么使用都需要先声明后赋值,从前到后的使用。