c++如何处理布尔类型是什么

我把问题压缩到下面的( 也许不是最小的) 示例应用程序中。 示例是一个通用的JSON解析器。 但是,它有两个问题。 1.当它的他选项没有传递时,当bool_是变体列表中的输出器时,它总是输出 true 或者 false 。 如果不是最后一个,有效之后的任何事情都会被。 我 无法 了解 原因 。 2.当输入为字符串时,从不从变量中激发字符串处理程序。 当在变体外使用时,它会激发。

示例代码的字符串输出简化为 karma::string,并且仍然显示错误。 当我接受了这里所学到的并返回到实际应用程序时,字符串输出将是一个 karma::string 。

I的输出类型,或者它不能正确地应用到我的例子( IE 我不明白所有的答案) 中,或者它不工作在更复杂的示例中。 我还对mini_xml示例代码很熟悉。

对我所做错误的任何建议? 为什么我做的是错误的,修复是正确的?

所有帮助都非常感谢你。

编辑以更改标题以覆盖显示的实际问题。 已经编辑以修复代码示例上的上载未命中。

和C语言相比,C++引入了更多的特性,包括:陈述性声明,类似函数的强制转型,new/delete操作符,布尔类型,参考类型,默认参数,函数重载,命名空间,类型(包括所有和类型相关的特性,如继承、成员函数、虚函数、抽象类型和构造函数),操作符重载,模板,::操作符,异常处理和运行时期识别。

发现C语言竟然没有bool类型。不对啊,在C语言中我们没少使用bool操作??? 这到底是怎么回事!!!

于是就开始搜索相关的信息发现如下信息:

ANSI C标准C语言共有32个关键字,这些关键字如下:
1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字:
2011年12月8日,ISO发布C语言的新标准C11,该标准新增了1个C语言关键字:
 
发现C89是没有bool类型的,在C99中才添加上的


另外的意外发现C99中才有inline关键字,C89是没有的,微软当前貌似用的是C89

C++一开始也没有bool类型,后来引入了bool类型。 bool类型的值只能为false和true,bool值作整数运算的时候,false转为0,true转为1。任何其他类型转为bool的时候,零转为false,非零转为true。 布尔类型的引入给C和C++的逻辑运算带来了变化,在引入布尔类型之前,C和C++的逻辑运算的结果为整形,if,while等条件语句的条件也是整形;引入布尔类型之后都变成了布尔类型。

C语言不存在bool类型,C语言中的真用0表示,假用非0值表示,上面通过枚举类型enum自定义一个布尔类型。 

注意:针对C语言中的enum定义,在使用时,必须加enum BOOL才能使用,而在C++中可以直接使用BOOL。

我要回帖

更多关于 布尔类型 的文章

 

随机推荐