多了个 int 为啥影响结果

img


不小心多写了个“int”,调试结果-2147483648,后来发现把“int”删了,结果为54
为啥这个int能影响结果。。

C语言允许在{}内定义和外部同名的变量,此时隐藏了外部变量
所以此时外部的 maxn 并没有赋值

你for循环外部有同名的

img

【以下回答由 GPT 生成】

问题出在多余的"int"关键字导致了局部变量的覆盖。

代码示例中的"int max_num = INT_MIN;"声明了一个局部变量max_num,并给其赋值INT_MIN。

在for循环内部,通过比较arr[i]和max_num的大小来更新max_num的值。

然而,将多余的"int"关键字删除后,max_num变成了全局变量,而不是局部变量。全局变量在声明时会被自动初始化为0。所以当比较arr[i]和max_num的大小时,初始的max_num为0,比任何正数小,所以无法更新max_num的值,导致结果错误。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^