大一C语言题:为什么会有'r' is uesd uninitialized in this function

img


这是源代码,下面是警告

img


虽然我知道正确的方法是什么,但是我想知道该怎么描述这个警告出现的原因呢?因为要分析,谢谢!

因为你的r再使用时并没有初始化,也就是还没有给r赋值,你必须先输入r的值再计算area

你定义临时变量r时,在编译时,编译器会为分配一个4字节空间,标记这块空间表示 r , 这块空间没有改动(因为你在定义时没有给r赋值),r 空间里的数就是一个随机数。
你后面用到r 作为输入数据,去计算 面积,因为r 可能是任意值,编译器检查出你计算的area 也不是一个可靠的数据,
就提醒你了,

你把计算area那行代码放到第一个scanf之后试试

先输入r
scanf("%f",&r);
然后在计算
area=3.14159rr;