第四课
1,进制表示方法
例子:
//十进制
int dec1 = 520;
//八进制
int oct1 = 01010;
//二进制
int bin1 = 0b1000001000;
//十六进制
int hex1 = 0x208;
2,单引号隔开数字
int bin = 0b10'0000'1000;
3,auto自动类型推导
1,C++中使用auto自动类型推导
注意事项:
1,auto仅仅是一个占位符,编译时会被真正的类型替代;
2,auto不能在函数的参数中使用(但是可以作为函数的返回值);
3,使用auto类型推导的变量必须立即初始化;
4,auto不能作用于非静态成员变量;
5,auto不能定义数组;
6,auto不能作用于模板参数;
4,for循环
1,C++中引入了基于范围的for循环;
定义:
表达式1 :表达式2;
表达式1:是范围内用于迭代的变量;
表达式2:表示被迭代的范围;
例子:
int arr[]={0,1,2,3};
//一般用法
for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
{
cout<<arr[i]<<endl;
}
//新用法
for(int i: arr)
{
cout<<i<<endl;
}
2,特点
·从数组的第一个元素开始,逐个赋值给迭代变量;
·不依赖于下标元素;
5,typeid
·typeid运算符用来获取一个表达式的类型信息,操作对象可以是表达式,也可以是数据类型;
用法:
typeid(datatype)//数据类型
typeid(expression)//表达式
·typeid会把获取到的类型信息保存到一个type_info类型的对象里面,并返回该对象的常引用;当需要具体的类型信息时,可以通过成员函数来提取;
//获取一个普通变量的类型信息
int n=999;
const type_info& nInfo=typeid(n);
cout<<nInfo.name()<<" "<<nInfo.raw_name()<<" "<<nInfo.hash_code()<<endl;
//输出:int .H 3440116983
//获取一个字面量的类型信息
const type_info& nInfo=typeid(3.14);
cout<<nInfo.name()<<" "<<nInfo.raw_name()<<" "<<nInfo.hash_code()<<endl;
//输出:double .N 3406561745
//获取一个普通类型的类型信息
const type_info& nInfo=typeid(char);
cout<<nInfo.name()<<" "<<nInfo.raw_name()<<" "<<nInfo.hash_code()<<endl;
//输出:char .D 3238785555
//获取一个表达式的类型信息
const type_info& nInfo=typeid(20*44);
cout<<nInfo.name()<<" "<<nInfo.raw_name()<<" "<<nInfo.hash_code()<<endl;
//输出:int .H 3440116983
·name():用来返回类型的名称;
·raw_name():用来返回名字编码;
·hash_code():用来返回当前类型对应的hash值,hash值是一个可以用来标志当前类型的整数,
6,内联函数
·C++提供了一种操作方式,允许编译时直接把函数替换到调用处;
定义:在函数前面加上inline声明为内联函数;
1,不能存在任何形式的循环语句;
2,不能存在过多的条件判断语句;
3,函数体不能过于庞大;
4,不能对函数进行取址操作;