C++中未初始化的bool值的问题
原创文件,欢迎阅读,禁止转载。
问题描述
你见过一个这样的bool值吗,判断 var 和 !var 都是成立的,今天被我遇到了,是在一个坑里遇到的。
今天调试了一个程序,发送一个网络消息,结果总是得不到回应,深入排查发现,竟然是因为一个具有4年工作经验的同事张某的不良编码风格埋下的坑,真是汗。
在C++中,bool值的随机值可能是任意的,不一定是我们以为的0/1,
而不同的系统中对bool值的判断也是搞笑。
我把代码简化一下来说明问题。
代码演示
typedef struct {bool resp; //是否反馈char* ret; //执行结果 }ARG;int main(int argc,char* argv[]) {ARG argSt;//argSt.resp=true;//这里的bool值不初始化printf("resp:%d\n",argSt.resp);if( argSt.resp ){puts("YES");}if( !argSt.resp ){puts("NO");} }
Windows的结果:
resp:44 YES
linux的结果:
resp:112 YES NO
结果解释:
从运行结果看出,Windows没问题,如果未初始化,debug版直接中止进程。
而linux中:
如果是int类型,则0就是假,其他都是真;而bool类型却不是这样;bool类型如果未初始化,则判断真也成立,假也成立,完全是乱来。如果初始化了,不管初始化为多少,都能像int判断真假一样了。
这里说清楚了这个问题,应该算是运行库的缺陷吧。
总结:
必须有良好的编码风格,未初始化这种毛病是不能容忍的。
原创文件,欢迎阅读,禁止转载。
转载于:https://www.cnblogs.com/zhaojk2010/p/5973919.html
C++中未初始化的bool值的问题相关推荐
- C ++标准是否允许未初始化的bool使程序崩溃?
本文翻译自:Does the C++ standard allow for an uninitialized bool to crash a program? I know that an " ...
- php 字符串偏移量,注意:PHP中未初始化的字符串偏移量
标签:php 嗨,我有这个功能,它返回一个通知: 注意:未初始化的字符串偏移量 function generaterandomkey($length) { $string=''; $character ...
- 解决vs2019 16.5版本中 编译虚幻4c++ bool值报错问题
vs版本:vs2019 16.5.4 虚幻4源码版本:4.24.3 在生成项目的时候,会发现出现下面的错误 点击图中对应的bool选项 发现是这个地方出现了错误, 我查了下谷歌,这个是微软更新的问题. ...
- BOOL 值在 debug 和 release 模式下初始化不一样!!!
原文:http://www.cppblog.com/lai3d/archive/2009/07/08/89514.html 未初始化的bool成员变量在Debug下默认值为false,Test下默认t ...
- bool类型未初始化的产生的奇怪现象
在写C++代码时,有时候可能会忘记对一个布尔变量赋初值,运行程序后会发现产生了一些自己预想不到的结果,或者程序并没有按照设定的分支运行,今天来说一下这背后的原理性的东西.首先来看一段简单代码: int ...
- c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针...
1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 1 2 3 4 5 6 ...
- 初始化全局变量实例说明C语言中初始化和未初始化的全局变量所在不同的段
本文是一篇关于初始化全局变量的帖子 实例说明C语言中初始化和未初始化的全局变量地点不同的段 一个程序: Makefile: objs := bss.oall: bss bss: $(objs)gcc ...
- c语言字母随机初始值,C语言的未初始化的数组的值为什么是随机的
突然想起来前几天同学问我为什么没有初始化的数组的值是随机的,发现这个困惑自己也是存在的,所以自己总结的心得. 1. 首先,并不是所有未初始化的数组的值都是随机的.对于没有初始化的数组,分两种情况: ( ...
- [LabVIEW]子VI中移位寄存器未初始化的严重后果
今天程序在调试的时候,发现占用内存不断增大,然后跑了一会...就死机了... 单次单次的调试,发现每运行一次,数组大小以等差数列增长. 仔细看代码,发现原因居然是因为我对移位寄存器少了一个初始化而造成 ...
最新文章
- app开发外包的流程、需求、报价,需要知道的细节!
- 关于matlab中pcolor显示图片时的shading设置问题
- Spring5源码 - 10 Spring事件监听机制_应用篇
- java-IO-基本输出输入流
- 整理了7道Python函数的练习题,希望对你学习函数有帮助
- 创建java取消module_IntelliJ IDEA 2020使用之模块新建删除导入!
- apache过滤恶意频繁访问_采用网关过滤器实现权限验证及对异常统一处理
- 开源日志库log4cplus+VS2008使用整理
- [PyTorch] 基于Python和PyTorch的线性拟合
- 接活,你为啥不行,之懒
- eclipse,myeclipse,Tomcat进行JSP开发配置
- 服务器ibmc虚拟软驱的用法,远程控制 - FusionServer Pro X6000 服务器 iBMC (V250以下) 用户指南 35 - 华为...
- 如何编写一份合格的架构设计文档
- iOSAPP创建桌面快捷方式
- IE浏览器插件ActiveX的制作以及Google 调用此插件
- Delphi/Pascaldelphi盒子
- 【有利可图网】不懂ps排版?超详细排版教程送上!
- 算法竞赛入门经典(第二版)第三章习题
- 渗透测试工程师的职业发展
- 面试说了这几句话,offer铁定无望!
热门文章
- (转) 用虚函数实现多态
- QEMU+GDB调试方法
- DataGradView操作之,列头右键菜单隐藏和显示字段功能
- Visual Studio 2008 每日提示(一)
- JSON.stringify( new WebSocket(ws://localhost:8080/websocket.do))
- 句句真研—每日长难句打卡Day4
- 零基础带你学习MySQL—创建表(四)
- python中的继承有什么特点_Python类的继承机制是什么
- 两个员工,一个做事认真但效率低,一个迟到早退但效率高,只能留一个我该留哪个?
- TrueNAS Enterprise是什么