我一直搞不懂为什么C语言的局部变量一定要初始化,网上看到的举例都是说因为会打印一些乱七八糟不可预测的值出来,但实际上,你管它能不能预测,一个局部变量用之前肯定是要对它赋值才会让这个变量给其他变量赋值或和其他变量参与运算,否则就是逻辑设计有问题了,比如我定义一个局部变量a,没有初始化,这个变量用的时候是从0开始的,有人可能就会说了,如果后面没有给a赋值0,就会出问题,你看,这就是没初始化的后果,可能是我认为这不是初始化的后果,这是程序逻辑设计的后果,既然要变量从0开始,那必然要在后面赋值0才能开始用,都没赋值,就直接理所当然地当它是0开始用,就很不正常了吧,局部变量初始化又不是都是规定赋0,所以还有什么值得令人信服的例子吗?
初始化是良好的编码习惯,主要是为了避免没有初始化就直接使用。虽然每个人都会认为自己不会犯这个错误,但实际这个错误发生的情况确实不少,所以在编码规范上一般会有这个要求
你说的道理都是对的。但对的不一定就一定不会发生错误。规章制度都是对的,但总会有人不小心犯错,不一定是主观的。
可以不一定要初始化 但是建议初始化
设告诉你没有赋值就一定是从0开始的。
以最常使用的int类型举例 int 代表整型数字。 范围是 -2147483648~2147483647,你没有赋初值,则有可能是其中的任意一个数字。
再举例 unsigned int 无符号整型 范围0 ~2147483647 。 你不赋初值,同样的可能是其中任意一个数字。
没有初值,编译器怎么知道这个值是多少,运算的时候就会出千奇百怪的问题。
最好养成习惯,不然代码一长,都不知道问题出在哪了。
对C语言来说的确不是必须初始化,只是一个良好的习惯而已。但是在别的语言中就未必了。
局部变量不必须初始化,就比如你设置了整形变量a,你想通过手动输入的方式给他赋值。这样做的话比你刚开始那样做合理的多。如果非的是一个常量,必须赋值
const int a=1
非常量,看你自己
编程多了 总会遇到奇奇怪怪的问题,很多都是变量未初始化引起的.. 所以约定俗成一般要初始化 防止后续的一些bug
其实只要能保证后续代码完全在你的掌控之中 你爱怎么写怎么写... 每个人习惯不一样 求同存异