*谨做个人笔记,本系列不建议初学者以系统性学习为目的的使用
C++ 11:
定义了数据类型long long, 至少和一个long一样大,对32位机器而言,一般是64位 即8字节
算术类型
字符型不同于其他基本类型,被分成三种,char,signed char以及unsigned char
但是表现形式只有两种:带符号或者无符号的。类型char会变现为两种之一,具体哪种取决与编译器
所以在算术表达式中不建议使用char,因为不同编译器的结果不同
类型转换
浮点赋整型,只保留整数部分,不是四舍五入
赋给带符号类型超出他能表示的范围时,结果是未定义的
赋给无符号类型超出他能表示的范围时,结果是这个值对此无符号类型所能表示数值总数(如unsigned char表示0-255,总数为256)取模后的余数,此原理也适用于将一个负数赋给一个无符号数。
//如下所示,死循环
for (unsigned i = 10; i >= 0; --i)
...
字面值常量
形如42这样的数被称为字面值常量
十进制的字面值是有符号数,是int, long, long long中能容纳他的最小的那个
八进制或者十六进制的字面值,是int, unsigned int, long, unsigned long, long long, unsigned long long中能容纳他最小的那个,所以不一定带符号
-42的字面值,负号并不在字面值之内,负号是对字面值进行取负
默认浮点类型的字面值是一个double
也可以指定字面值的类型:
L‘a‘ //宽字符型字面值,wchar_t
u8“HI” //UTF-8字符串字面值
3.1415L //long double
细则见P37
变量
当对象在创建时获得了一个特定的值,称之为初始化
=可以用于初始化,当然也可以用于后续赋值。初始化和赋值完全不同
初始化含义是创建变量时赋予一个初始值;赋值含义是把对象当前值擦除,用一个新值来替代。
C++ 11:列表初始化
用花括号来初始化变量。这种初始化方式更为严格,如果使用列表初始化时初始值存在信息丢失的风险,编译器将报错。
long double ld = 3.141592653
int a{ld}, b = {ld}; //报错
int c(ld), d = ld; //正确,但丢失部分信息