我一直搞不懂为什么C语言的局部变量一定要初始化,网上看到的举例都是说因为会打印一些乱七八糟不可预测的值出来,但实际上,你管它能不能预测,一个局部变量用之前肯定是要对它赋值才会让这个变量给其他变量赋值或和其他变量参与运算,否则就是逻辑设计有问题了,比如我定义一个局部变量a,没有初始化,这个变量用的时候是从0开始的,有人可能就会说了,如果后面没有给a赋值0,就会出问题,你看,这就是没初始化的后果,可能是我认为这不是初始化的后果,这是程序逻辑设计的后果,既然要变量从0开始,那必然要在后面赋值0才能开始用,都没赋值,就直接理所当然地当它是0开始用,就很不正常了吧,局部变量初始化又不是都是规定赋0,所以还有什么值得令人信服的例子吗?
8条回答 默认 最新
- 快乐鹦鹉 2022-08-06 11:10关注
初始化是良好的编码习惯,主要是为了避免没有初始化就直接使用。虽然每个人都会认为自己不会犯这个错误,但实际这个错误发生的情况确实不少,所以在编码规范上一般会有这个要求
你说的道理都是对的。但对的不一定就一定不会发生错误。规章制度都是对的,但总会有人不小心犯错,不一定是主观的。本回答被专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥40 微信小程序 使用vant组件ActionSheet 下拉面板,内容区域滚动会触发。scroll-view自定义下拉刷!即使设置停止下拉刷新也不行。
- ¥15 专业问题提问,7月5号2点之前
- ¥25 使用cube ai 导入onnx模型时报错
- ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
- ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
- ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
- ¥15 使用华为ENSP软件模拟实现该实验拓扑
- ¥15 通过程序读取主板上报税口的数据
- ¥15 matlab修改为并行
- ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373