Scanf语句前为什么可以定义一个类型并初始化

int a;
scanf("%d",&a);

为什么还可以以下这样,有什么区别
int a=5;
scanf("%d",&a);

Scanf语句前为什么可以定义一个类型并初始化
这个就像问为什么 int 可以定义一个整形变量一样 。都是语法规定的
上面两个没有区别
细节就是
第一个,初始化 ,没有值 ,然后scanf 给它赋值
第二个,初始化 ,赋值为5,然后scanf 再次赋值替换掉原来的值。
由于赋值为5后没有任何操作之类的。所以从用户的角度和第一个没什么区别,但是对计算机的角度的差异上面已给出

这就是好比,int a; int a = 9; a =10; 这样类似。。。先定义个值,然后在重新赋值而已!!!

先赋值和重新赋值的问题。在未初始化情况下,初值为随机值;在赋值的情况下就很明确了噻。scanf只是从终端获取一个值,赋值到随后的地址而言,即重新赋值。