本文学习自 狄泰软件学院 唐佐林老师的 C++课程
实验1 :bool 类型使用注意1
实验2 :bool 类型使用注意2
实验3:C 中 三目运算符不可作为左值使用
实验4 :C++ 中 三目运算符可作为左值使用
实验5 :C++中 三目运算符可能返回的值中,有一个是常量值,不能作为左值使用
实验6 :引用的使用
实验7 :引用的使用- 用同类型变量初始化
实验8 :引用的使用- 定义引用时必须要初始化
实验9 :引用的使用- 不能用字面常量初始化引用
打印:
0
1
1
实验1 :bool 类型使用注意1
#include <stdio.h>
int main(int argc, char *argv[])
{
bool b = 0;
printf("b = %d\n", b);
b++;
printf("b = %d\n", b);
b = b-3;
printf("b = %d\n", b);
return 0;
}
实验2 :bool 类型使用注意2
#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;
}
C++ 布尔类型只是对C的补充,C语言中没有具体的布尔这种基础类型,而是用int类型代替布尔类型,虽然说可以,但是不严谨,所以C++中的第一个加号就是对类型的加强。所以布尔类型出现在C++中,是理所当然的。
在C语言中,三目运算符不能出现在 赋值符号的左边,在C++中呢?
实验3 在C语言中,三目运算符不能出现在 赋值符号的左边
C语言中
test.c
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 1;
int b = 2;
(a < b ? a : b) = 3;
prtitf("a = %d\n, b=%d\n", a, b);
return 0;
}
报错,三目运算符不能出现在 赋值符号的左边
实验4 :C++中 三目运算符可作为左值使用
test.cpp
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 1;
int b = 2;
(a < b ? a : b) = 3;
prtitf("a = %d\n, b=%d\n", a, b);
return 0;
}
实验5 :C++中 三目运算符可能返回的值中,有一个是常量值,不能作为左值使用
test.cpp
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 1;
int b = 2;
(a < b ? a : 2) = 3;
prtitf("a = %d\n, b=%d\n", a, b);
return 0;
}
报错,因为三目运算符可能返回的值中,有一个是常量之,不能作为左值使用。
思考:C++对三目运算符做了怎样的升级?这种升级的意义是什么呢?
C++ 中如果说三目运算符所有可能的返回都是变量的时候,那他返回的就是变量本身!
实验6 :引用的使用
test.cpp
#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;
}
实验7 :引用的使用- 用同类型变量初始化
test.cpp
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 4;
float& 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;
}
报错,引用类型不匹配,C++是强类型的语言。
实验8 :引用的使用- 定义引用时必须要初始化
test.cpp
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 4;
float& b;
b = 5;
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("&a = %p\n", &a);
printf("&b = %p\n", &b);
return 0;
}
报错:引用没有初始化!!
实验9 :引用的使用- 不能用字面常量初始化引用
test.cpp
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 4;
float& b = 1;
b = 5;
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("&a = %p\n", &a);
printf("&b = %p\n", &b);
return 0;
}
报错:b必须是另一个变量的别名,1是一个字面常量,也不需要别名。