凯发k8天生赢家一触即发

【c primer】2.1 基本内置类型 -凯发k8天生赢家一触即发

2023-08-16,,

1. 基本内置类型

基本算数类型

类型 含义 最小尺寸
bool 布尔类型 8bits
char 字符 8bits
wchar_t 宽字符 16bits
char16_t unicode字符 16bits
char32_t unicode字符 32bits
short 短整型 16bits
int 整型 16bits (在32位机器中是32bits)
long 长整型 32bits
long long 长整型 64bits (是在c 11中新定义的)
float 单精度浮点数 6位有效数字
double 双精度浮点数 10位有效数字
long double 扩展精度浮点数 10位有效数字

2. 如何选择类型

1.当明确知晓数值不可能是负数时,选用无符号类型;
2.使用int执行整数运算。一般long的大小和int一样,而short常常显得太小。除非超过了int的范围,选择long long
3.算术表达式中不要使用charbool
4.浮点运算选用double

3. 类型转换

非布尔型赋给布尔型,初始值为0则结果为false,否则为true。
布尔型赋给非布尔型,初始值为false结果为0,初始值为true结果为1。

3.1 无符号整型接收超出范围的值(例如负数时):

数据以补码形式存放,-1补码为1111 1111

unsigned char视-1的补码为正数,而正数的原码、反码、补码都是一样的。因此1111 1111被解析为255.

因此c的值为255%6 = 255

练习:

unsigned u = 10, u2 = 42;
std::cout << u2 - u << std::endl;
std::cout << u - u2 << std::endl;
输出:
32
4294967264
/*
*-32
*补码:
*1111 1111 1111 1111 1111 1111 1110 0000
*无符号时,十进制为:2^32 - 1 - (16 8 4 2 1) = 4,294,967,264
* 4,294,967,264 % 4,294,967,296 = 4,294,967,264
*/

字面值常量

一个形如42的值被称作字面值常量(literal)。

整型和浮点型字面值。

十进制字面值不会是负数。

个人理解:十进制字面值没有用unsigned类型存储,因此如果存负数,则正数的表示范围比八进制和十六进制的少一位符号位

字符和字符串字面值。

使用空格连接,继承自c。

字符字面值:单引号, 'a'

字符串字面值:双引号, "hello world"

分多行书写字符串。

std:cout<<"wow, a really, really long string"
"literal that spans two lines" <

转义序列。\n\t等。

布尔字面值。truefalse

指针字面值。nullptr

字符串型实际上时常量字符构成的数组,结尾处以'\0'结束,所以字符串类型实际上长度比内容多1。

【c primer2.1 基本内置类型的相关教程结束。

网站地图