您好,登錄后才能下訂單哦!
這篇文章主要介紹了C/C++實操True and false的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
在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
/* Copyright (C) 1998, 1999, 2000, 2009 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <Licenses- GNU Project - Free Software Foundation>. */ /* * ISO C Standard: 7.16 Boolean type and values <stdbool.h> */ #ifndef _STDBOOL_H #define _STDBOOL_H #ifndef __cplusplus #define bool _Bool #define true 1 #define false 0 #else /* __cplusplus */ /* Supporting <stdbool.h> in C++ is a GCC extension. */ #define _Bool bool #define bool bool #define false false #define true true #endif /* __cplusplus */ /* Signal that all the definitions are present. */ #define __bool_true_false_are_defined 1 #endif /* stdbool.h */
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虛擬機下編輯編譯的示例代碼。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“C/C++實操True and false的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。