C语言中,plus用scanf读多个变量时

C语言中,plus用scan f读多个变量时,为什么不用对a和b初始化,最后编译的结果是一样的

img

img

scanf 输入变量,就是读取键盘输入,然后来对 a 和 b 进行赋值,
所以两个变量 不论一开始有没有赋值,最终都会被 键盘输入的数据,赋值掉,也就是 a = 1, b = 2。

当变量的初值由用户输入或者从外部读取时,不需要进行初始化赋值的哦!但为了代码的健壮性,建议你在定义变量时进行初始化哦。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/224377
  • 这篇博客也不错, 你可以看下【C语言学习】scanf输入a,b计算结果
  • 除此之外, 这篇博客: c语言使用scanf读取多个输入,并保存到数组中中的 标题:c语言使用scanf读取多个输入,并保存到数组中 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 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混合输入的那些坑小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    在C语言中,使用scanf函数读取多个变量时不需要对这些变量进行初始化的原因是由于scanf函数的工作机制以及C语言中的变量存储特性。

    首先,scanf函数是一种输入函数,用于从标准输入设备(一般是键盘)读取数据,并将读取的数据存储到指定的变量中。在使用scanf函数时,需要使用格式化字符串指定要读取的数据的类型以及要存储数据的变量。

    其次,C语言中,变量在声明时并不会自动被赋初值。所以在使用scanf函数读取多个变量时,这些变量初始值是未知的,可能是随机值,也可能被重复读取了之前的数据。

    然而,尽管变量在声明时未被赋初值,但在使用scanf函数读取数据时,scanf函数会将读取的数据存储到指定的变量中,从而覆盖原来的随机值。即使未对变量进行初始化,读取数据后,变量中就会存储最新输入的值。

    另外,即使变量在使用scanf函数读取数据前已经被初始化,scanf函数也会将读取的数据覆盖变量原来的值。所以在使用scanf函数读取多个变量时,无论是否初始化,变量最终都会存储最新的输入值。

    综上所述,虽然可以不对变量进行初始化,但为了避免产生未初始化变量的隐患,建议在使用变量之前进行初始化操作。初始化操作可以通过在变量声明时为其赋初值,或者在使用变量之前手动赋初值。这样可以保证变量的初始值可控,避免因未初始化而引发的问题。