Bootstrap

C++深度解析(3)—布尔类型和引用

1.布尔类型

1.1 布尔类型

  • C++中的布尔类型
  • C++在C语言的基本类型系统之上增加了bool
  • C++中的bool可取的值只有true和false
  • 理论上bool只占用一个字节
    •  true代表真值,编译器内部用1来表示
    •  false代表非真值,编译器内部用0来表示

1.2 布尔类型的值

  • bool类型只有true(非0)和false(0)两个值
  • C++编译器会将非0值转换为true,0值转换为false 
#include <stdio.h>

int main(int argc, char *argv[])
{
    int a;
    bool b = true;
    
    printf("b = %d, sizeof(b) = %d\n", b, sizeof(b));
    
    b = 3;
    a = b;
    
    printf("a = %d, b = %d\n", a, b);
    
    b = -5;
    a = b;
    
    printf("a = %d, b = %d\n", a, b);
    
    a = 10;
    b = a;
    
    printf("a = %d, b = %d\n", a, b);
    
    b = 0;
    
    printf("b = %d\n", b);
    
    printf("Press enter to continue ...");
    
    getchar();	
    
    return 0;
}
  • 运行结果

1.3 布尔类型

  • 布尔类型是C++中的基本数据类型
  •  可以定义bool类型的全局变量
  • 可以定义bool类型的常量
  • 可以定义bool类型的指针
  • 可以定义bool类型的数组

2.三目运算符

  • C++对三目运算符进行了升级
  • 下面的代码正确吗?
int a = 1;  
int b = 2;  
  
(a < b ? a : b) = 3;  
  
printf("a = %d,b = %d\n", a, b);  
  • gcc编译不通过,g++编译通过

  • 当改为:(a < b ? a : 2)= 3时,g++也编译不通过

;