1.c++中的bool
bool b = 0;
printf(“b = %d\n”, b);
b ++;
printf(“b = %d\n”, b);
b = b - 3;
printf(“b = %d\n”, b);
结果是0 1 1;
原因是因为c++ 中虽然是定义了bool类型,但是其本质还是数值,所以可以进行 数值运算的。
最终结果转换 对应非0 为1,0为0;
2.c++ bool的基本属性
#include <stdio.h>
int main(int argc, char *argv[])
{
bool b = false;
int a = b;
printf("sizeof(b) = %d\n", sizeof(b)); // 1
printf("b = %d, a = %d\n", b, a); // 0, 0
b = 3;
a = b;
printf("b = %d, a = %d\n", b, a); // 1, 1
b = -5;
a = b;
printf("b = %d, a = %d\n", b, a); // 1, 1
a = 10;
b = a;
printf("a = %d, b = %d\n", a, b); // 10, 1
a = 0;
b = a;
printf("a = %d, b = %d\n", a, b); // 0, 0
return 0;
}
运行结果:
lkk@lkk-virtual-machine:~/c++$ g++ 4-1.cpp
4-1.cpp: In function ‘int main(int, char**)’:
4-1.cpp:8:41: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]
printf("sizeof(b) = %d\n", sizeof(b));
^
lkk@lkk-virtual-machine:~/c++$ ./a.out
sizeof(b) = 1
b = 0, a = 0
b = 1, a = 1
b = 1, a = 1
a = 10, b = 1
a = 0, b = 0
3.bool 相关的三目运算符(c 和c++)
int a = 1;
int b = 2;
(a < b ? a : b) = 3;
printf(“a = %d, b = %d\n”, a ,b);
在c中报错(三目运算 是一个值,所以不能赋值)
c++可以。a=3,b=1;为什么这样呢?
改一改,混合使用。
int a = 1;
int b = 2;
(a < b ? a : 2) = 3;
printf(“a = %d, b = %d\n”, a ,b);
c++编译报错。为什么这样呢?
答:三目运算符 只有当所有返回值都是变量的时候,才可以作为左值使用。
引用篇(新增)
1.变量名回顾:变量是一段实际连续存储空间的别名。
而引用就是再用一个名字(自然有其规则)
2.实例分析
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 4;
int& b = a;
b = 5;
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("&a = %p\n", &a);
printf("&b = %p\n", &b);
return 0;
}
运行结果
lkk@lkk-virtual-machine:~/c++$ g++ 4-2.cpp
lkk@lkk-virtual-machine:~/c++$ ./a.out
a = 5
b = 5
&a = 0x7ffd6546513c
&b = 0x7ffd6546513c
地址一致。改动一下程序(1.float &b=a; 2.int&b; 3.int&b=1;)都不行,看引用的定义。
3.那么再看看三目运算符