1、布尔类型
- C++在C语言的基本类型系统之上增加了bool;
- 实际上,C99的标准中也引入了bool类型,使用时需要引用stdbool.h头文件
- C++中的bool可取的值只有truea和false;
- 理论上bool只占用一个字节,如果多个bool变量定义在一起,可能会各占一个bit,这取决于编译器的实现;
C++编译器会在赋值时将非0值转换为true,0值转换为false;
Tip:
- true代表真值,编译器内部用1来表示;
- false代表非真值,编译器内部用0来表示;
示例:
exp-1.cpp
#include <stdio.h>
int main(int argc, char *argv[])
{
int a;
bool b = true;
printf("b = %d, sizeof(b) = %ld\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);
return 0;
}
运行结果:
exp-2.cpp
#include <stdio.h>
int main(int argc, char *argv[])
{
bool b = false;
printf("b = %d\n", b);
b++;
printf("b = %d\n", b);
b = b + 1;
printf("b = %d\n", b);
return 0;
}
运行结果:
2、三目运算符
- C语言中的三目运算符返回的是变量值,不能作为左值使用;
- C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方;
注意:
三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用。
示例:
exp-3.cpp
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 1;
int b = 2;
(a < b ? a : b) = 3; //作为左值使用
printf("a = %d, b = %d\n", a, b);
return 0;
}
运行结果: