返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C/C++实操True and false详解
  • 906
分享到

C/C++实操True and false详解

2024-04-02 19:04:59 906人浏览 安东尼
摘要

在C11标准文档中,规定了关系运算符 <、> 、<= 、>=的运算结果,真时返回1,假时返回0,返回类型为整型。 运算符==、!=和关系运算符类似,除了运算优

在C11标准文档中,规定了关系运算符 <、> 、<= 、>=的运算结果,真时返回1,假时返回0,返回类型为整型。

运算符==、!=和关系运算符类似,除了运算优先级较低以外,也是返回1或0。

真(True)的定义是非0,所以假(False)的定义就是整型的0值。

C语言本身只有一个_Bool定义,是一个关键字。

_Bool类型是一个对象,存储0和1两个值,是一个无符号的整型。

如下程序所示,_Bool只有0和1,即假和真两个值,赋值时非0都看作1。

任何一个标量值给_Bool类型变量赋值,如果等于0,赋值为0,否则就赋值为1。


#include <stdio.h>
int main()
{
  _Bool varA;
  varA = 2;
  printf("varA:%d.\n",varA);
  varA = -1;
  printf("varA:%d.\n",varA);
  varA = 0;
  printf("varA:%d.\n",varA);
  printf("Hello world!\n");
  return 0;
}
$ GCc -o tof tof.c
$ ./tof
varA:1.
varA:1.
varA:0.
Hello world!

为了更方便程序员对布尔类型的使用,C语言的标准库,头文件<stdbool.h>,定义了和布尔操作相关的类型。 stdbool.h


​


#ifndef _STDBOOL_H
#define _STDBOOL_H
#ifndef __cplusplus
#define bool        _Bool
#define true        1
#define false        0
#else 

#define _Bool        bool
#define bool        bool
#define false        false
#define true        true
#endif 

#define __bool_true_false_are_defined        1
#endif        
​

C里的头文件,stdbool.h,定义了bool类型,其实就是_Bool。

并定义了true为1,false为0,方便使用。

这几个宏按照上面的定义展开为类型_Bool以及常数1和0。

使用了stdbool.h的C程序:


#include <stdio.h>
#include <stdbool.h>
int main()
{
  bool varA;
  varA = 2;
  printf("varA:%d.\n",varA);
  varA = -1;
  printf("varA:%d.\n",varA);
  varA = 0;
  printf("varA:%d.\n",varA);
  varA = true;
  printf("varA:%d.\n",varA);
  varA = false;
  printf("varA:%d.\n",varA);
  printf("Hello world!\n");
  return 0;
}
$ gcc -o tof tof.c
$ ./tof
varA:1.
varA:1.
varA:0.
varA:1.
varA:0.
Hello world!

同时我们看到了stdbool.h里面还使用了__cplusplus这个c++编译器的宏开关,如果使用C++编译器来编译C程序时,就是用下面的宏定义。

这时定义了4个,bool、false、和true都原封不动,说明C++语言本身自带定义。而_Bool转换为bool,表明C++里没有_Bool,转而使用bool。

下面我们来看一下C++里面的true、false的定义:

查看C++11标准文档,C++里bool、true、false都是关键字。

true、false是字面常量,bool类型的变量值是true或者false。

如下程序所示:


#include <stdio.h>
int main()
{
  bool varA;
  printf("false:%d,true:%d.\n", false, true);
  varA = 2;
  printf("varA:%d.\n", varA);
  varA = -1;
  printf("varA:%d.\n", varA);
  varA = 0;
  printf("varA:%d.\n", varA);
  printf("Hello world!\n");
  return 0;
}
$ g++ -o tofplus tof.cpp
$ ./tofplus
false:0,true:1.
varA:1.
varA:1.
varA:0.
Hello world!

false是0,true是1。

bool类型变量的值只能是0或1。

注意:

1,关于大写的TRUE和FALSE定义,在C/C++语言和标准库里都没有定义,程序中使用的都是单独添加的。

2,本文使用的gcc版本:gcc version 9.3.0,ubuntu虚拟机下编辑编译的示例代码。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: C/C++实操True and false详解

本文链接: https://lsjlt.com/news/136850.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C/C++实操True and false详解
    在C11标准文档中,规定了关系运算符 <、> 、<= 、>=的运算结果,真时返回1,假时返回0,返回类型为整型。 运算符==、!=和关系运算符类似,除了运算优...
    99+
    2024-04-02
  • Python解惑之True和False详解
    前言 众所周知在Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分别用True和False表示。在if 条件判断和while 语句中经常用到,不过在Python2.x 中,...
    99+
    2022-06-04
    详解 Python True
  • Python中True(真)和False(假)判断详解
    目录前言1.True和False的逻辑取反2.if条件语句中的True和False3.pandas.DataFrame.loc 中的否定总结前言 Python中的 True和 Fal...
    99+
    2024-04-02
  • C语言中的return true和return false有什么区别
    在C语言中,return true和return false是用于表示一个函数的返回值是真(true)或假(false)。它们的区别...
    99+
    2023-08-19
    C语言
  • C#实现XML文件操作详解
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-23
    C# XML文件操作 C# XML 操作 C# XML
  • C#操作XML方法详解
    目录 using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(...
    99+
    2024-04-02
  • C++11原子操作详解
    目录C++11原子操作原子操作的概念示例总结C++11原子操作 原子操作的概念 所谓原子操作,其意义就是“原子是最小的,不可分割的最小个体”。**表示当多个线程访问同一个全局资源的时...
    99+
    2024-04-02
  • C语言文件操作详解
    目录一、什么是文件二、文件缓冲区三、文件指针四、文件的打开和关闭。总结一、什么是文件 在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。 程序文件: 包括源程序文件(后缀为....
    99+
    2024-04-02
  • C# ManagementObjectSearcher操作window案例详解
    在刚学C#,用ManagementObjectSearcher 竟然不能解析到头文件,需要手动 Add Referance.. 前言:  我们在很多情况下想要获得计算机的...
    99+
    2024-04-02
  • C# XmlDocument操作XML案例详解
    C# XmlDocument操作XML XML:Extensible Markup Language(可扩展标记语言)的缩写,是用来定义其它语言的一种元语言,其前身是SGML(Sta...
    99+
    2024-04-02
  • C++文件读写操作详解
    目录一、读写文本文件1.1 写文件1.2读文件二、读写二进制文件2.1 写文件2.2 读文件一、读写文本文件 1.1 写文件 写文件步骤如下: 包含头文件 #include <...
    99+
    2024-04-02
  • 详解C#winformListView的基本操作
    组图的加载与导入 图片存放的相对路径/ 与exe存放在一个文件夹 为界面添加图片组–组件 图片下载路径链接:img_jb51.rar // 组图的加载与导入 Di...
    99+
    2024-04-02
  • 详解C语言之操作符
    目录1.加减乘2.除(/)注意:3.取余(%)注意:4.移位操作符(>> <<)注意5.位操作符(| ,& ,^)6.逻辑操作符(&&...
    99+
    2024-04-02
  • C/C++详解实现二层转发
    目录OSI第2层什么是MAC地址表二层转发C/C++代码实现总结OSI第2层 前两个字段分别是目的地址和源地址字段。第3个字段是2字节的类型字段,用来标识上一层是什么协议。 数据...
    99+
    2024-04-02
  • C语言的堆串操作详解
    目录一、堆串概念。二、基本操作。三、运行:总结一、堆串概念。 与定长顺序穿的存储结构类似,都是用一组地址连续的存储单元存储串的字符序列,不同的是堆串的存储空间是动态分配的,只要存储空...
    99+
    2024-04-02
  • C#下使用XmlDocument操作XML详解
    目录一、XML DOM概述二、XML成员1、XMl节点:XmlNode1、属性:2、方法:2、XML文档:XMLDocument1、属性:2、方法:3、事件:3、XML元素:XmlE...
    99+
    2024-04-02
  • C#中的Linq to JSON操作详解
    目录一、创建JObject and JArrary实例1、手动创建JSON1、创建JSON对象,JObject2、创建JSON数组,JArrary2、使用Linq创建JSON3、从对...
    99+
    2024-04-02
  • 一文详解C语言操作符
    目录一、基础篇1.算数操作符2.单目操作符3.逻辑操作符4.条件操作符5.逗号表达式6.下标引用,函数调用和结构体成员访问7.关系操作符 二、进阶篇1.二进制2.移位操作符...
    99+
    2023-05-20
    C语言操作符详解 C语言操作符
  • C++文件流读写操作详解
    目录1.打开文件1.1 fstream类型1.2 open()的函数原型1.3 打开方式1.4 打开文件的属性1.5 示例代码2.文本文件的读写2.1 写文件示例2.2 读文件示例2...
    99+
    2024-04-02
  • C++中文件操作基础详解
    目录文件操作文件分类文本文件写文件读文件二进制文件写文件读文件文件操作 意义:利用文件操作可以保存我们程序运行的信息,是持久化技术的体现 文件分类 按文件类型分为: 1、文本文件 &...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作