C语言中,plus用scan f读多个变量时,为什么不用对a和b初始化,最后编译的结果是一样的
scanf 输入变量,就是读取键盘输入,然后来对 a 和 b 进行赋值,
所以两个变量 不论一开始有没有赋值,最终都会被 键盘输入的数据,赋值掉,也就是 a = 1, b = 2。
当变量的初值由用户输入或者从外部读取时,不需要进行初始化赋值的哦!但为了代码的健壮性,建议你在定义变量时进行初始化哦。
int main(){
int arr[71];
int i = 0;
scanf("%d",&arr[i]);
while(arr[i] > 0 && arr[i] < 71){
i++;
scanf("%d",&arr[i]);
}
return 0;
}
在C语言中,使用scanf函数读取多个变量时不需要对这些变量进行初始化的原因是由于scanf函数的工作机制以及C语言中的变量存储特性。
首先,scanf函数是一种输入函数,用于从标准输入设备(一般是键盘)读取数据,并将读取的数据存储到指定的变量中。在使用scanf函数时,需要使用格式化字符串指定要读取的数据的类型以及要存储数据的变量。
其次,C语言中,变量在声明时并不会自动被赋初值。所以在使用scanf函数读取多个变量时,这些变量初始值是未知的,可能是随机值,也可能被重复读取了之前的数据。
然而,尽管变量在声明时未被赋初值,但在使用scanf函数读取数据时,scanf函数会将读取的数据存储到指定的变量中,从而覆盖原来的随机值。即使未对变量进行初始化,读取数据后,变量中就会存储最新输入的值。
另外,即使变量在使用scanf函数读取数据前已经被初始化,scanf函数也会将读取的数据覆盖变量原来的值。所以在使用scanf函数读取多个变量时,无论是否初始化,变量最终都会存储最新的输入值。
综上所述,虽然可以不对变量进行初始化,但为了避免产生未初始化变量的隐患,建议在使用变量之前进行初始化操作。初始化操作可以通过在变量声明时为其赋初值,或者在使用变量之前手动赋初值。这样可以保证变量的初始值可控,避免因未初始化而引发的问题。