原创文件,欢迎阅读,禁止转载。

问题描述

你见过一个这样的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值的问题相关推荐

  1. C ++标准是否允许未初始化的bool使程序崩溃?

    本文翻译自:Does the C++ standard allow for an uninitialized bool to crash a program? I know that an " ...

  2. php 字符串偏移量,注意:PHP中未初始化的字符串偏移量

    标签:php 嗨,我有这个功能,它返回一个通知: 注意:未初始化的字符串偏移量 function generaterandomkey($length) { $string=''; $character ...

  3. 解决vs2019 16.5版本中 编译虚幻4c++ bool值报错问题

    vs版本:vs2019 16.5.4 虚幻4源码版本:4.24.3 在生成项目的时候,会发现出现下面的错误 点击图中对应的bool选项 发现是这个地方出现了错误, 我查了下谷歌,这个是微软更新的问题. ...

  4. BOOL 值在 debug 和 release 模式下初始化不一样!!!

    原文:http://www.cppblog.com/lai3d/archive/2009/07/08/89514.html 未初始化的bool成员变量在Debug下默认值为false,Test下默认t ...

  5. bool类型未初始化的产生的奇怪现象

    在写C++代码时,有时候可能会忘记对一个布尔变量赋初值,运行程序后会发现产生了一些自己预想不到的结果,或者程序并没有按照设定的分支运行,今天来说一下这背后的原理性的东西.首先来看一段简单代码: int ...

  6. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针...

    1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 1 2 3 4 5 6 ...

  7. 初始化全局变量实例说明C语言中初始化和未初始化的全局变量所在不同的段

    本文是一篇关于初始化全局变量的帖子 实例说明C语言中初始化和未初始化的全局变量地点不同的段 一个程序: Makefile: objs := bss.oall: bss bss: $(objs)gcc ...

  8. c语言字母随机初始值,C语言的未初始化的数组的值为什么是随机的

    突然想起来前几天同学问我为什么没有初始化的数组的值是随机的,发现这个困惑自己也是存在的,所以自己总结的心得. 1. 首先,并不是所有未初始化的数组的值都是随机的.对于没有初始化的数组,分两种情况: ( ...

  9. [LabVIEW]子VI中移位寄存器未初始化的严重后果

    今天程序在调试的时候,发现占用内存不断增大,然后跑了一会...就死机了... 单次单次的调试,发现每运行一次,数组大小以等差数列增长. 仔细看代码,发现原因居然是因为我对移位寄存器少了一个初始化而造成 ...

最新文章

  1. app开发外包的流程、需求、报价,需要知道的细节!
  2. 关于matlab中pcolor显示图片时的shading设置问题
  3. Spring5源码 - 10 Spring事件监听机制_应用篇
  4. java-IO-基本输出输入流
  5. 整理了7道Python函数的练习题,希望对你学习函数有帮助
  6. 创建java取消module_IntelliJ IDEA 2020使用之模块新建删除导入!
  7. apache过滤恶意频繁访问_采用网关过滤器实现权限验证及对异常统一处理
  8. 开源日志库log4cplus+VS2008使用整理
  9. [PyTorch] 基于Python和PyTorch的线性拟合
  10. 接活,你为啥不行,之懒
  11. eclipse,myeclipse,Tomcat进行JSP开发配置
  12. 服务器ibmc虚拟软驱的用法,远程控制 - FusionServer Pro X6000 服务器 iBMC (V250以下) 用户指南 35 - 华为...
  13. 如何编写一份合格的架构设计文档
  14. iOSAPP创建桌面快捷方式
  15. IE浏览器插件ActiveX的制作以及Google 调用此插件
  16. Delphi/Pascaldelphi盒子
  17. 【有利可图网】不懂ps排版?超详细排版教程送上!
  18. 算法竞赛入门经典(第二版)第三章习题
  19. 渗透测试工程师的职业发展
  20. 面试说了这几句话,offer铁定无望!

热门文章

  1. (转) 用虚函数实现多态
  2. QEMU+GDB调试方法
  3. DataGradView操作之,列头右键菜单隐藏和显示字段功能
  4. Visual Studio 2008 每日提示(一)
  5. JSON.stringify( new WebSocket(ws://localhost:8080/websocket.do))
  6. 句句真研—每日长难句打卡Day4
  7. 零基础带你学习MySQL—创建表(四)
  8. python中的继承有什么特点_Python类的继承机制是什么
  9. 两个员工,一个做事认真但效率低,一个迟到早退但效率高,只能留一个我该留哪个?
  10. TrueNAS Enterprise是什么