【c++ primer读书笔记】【第2章】变量和基本类型

1、  无符号类型

含有无符号类型的表达式,当一个算式表达式中既有unsigned int,又有int时,int会转化为unsigned int,

如int a=-1,unsigned b=1,则在我的机器中a*b=4294967295。

无符号数不会小于0也关系到循环的写法

for(int i=10;i>=0;--i)
      cout<<i<<endl;

从10到0降序输出

 for(unsigned i=10;i>=0;--i)
      cout<<i<<endl;
将会导致死循环,当i=0时再减去1得到结果-1并不满足无符号数要求,因此-1自动转换为一个合法的无符号数。

2、  字符串字面值分行书写

cout<<" a really long string literal "
"that spans two lines"<<endl;
等同于
cout<<"a really long string literal that spans two lines"<<endl;

3、  列表初始化

如果使用列表初始化且初始值存在丢失信息的风险,则编译器报错

double pi=3.14;
int a{pi},b={pi};//错误,转换未执行,因为存在丢失信息的风险
int c(pi),d=pi; //正确,转换执行,且确实丢失了部分值

4、  Extern语句如果包含初始值就不再是声明,而变成定义了:

extern double pi = 3.14; //定义

5、  auto类型说明符

C++11引入auto,用它能让编译器替我们分析表达式的类型

double val1=2.0,val2=3.0;
auto item=val1+val2;//item的类型是double

6、  decltype类型指示符

C++11引入decltype,选择并返回操作数的数据类型

const int ci=0, &cj=ci;
decltype(ci) x=0;//x的类型是const int
decltype(cj) y=x;//y的类型是const int&

注意点:decltype((variable))的结果永远是引用,decltype(variable)的结果只有当variable本身是引用是才是引用

你可能感兴趣的:(【c++ primer读书笔记】【第2章】变量和基本类型)