C++ 的类型

整数

short
int
long
long long

错在了c1 * c2没有long long

回顾C++ 各类型的范围

1字节 byte, char
2字节 unsigned short, short
4字节 unsigned (int), int
8字节 unsigned long long, long long

byte
[0, 255]
char
[-128, 127]

unsigned short
[0, 65535]
short
[-32768, 32767]

a**b表示a的b次方
XeY表示科学计数法,X * 10 ** Y
比如3.4e2 = 340, 5.5e-1 = 0.55

unsigned
[0, 232]
(2 ** 32 约为4.2e9, 42亿, 4.2 billion)
int
[-2
31, 2**31-1]
(2 ** 31 约为2.1e9, 21亿, 2.1 billion)

unsigned long long
[0, 264]
(2
64约为1.9e19)
long long
[-263, 263-1]
(2**63约为9e18)

运算规则

类型低于int的(比int占用字节数少的)类型,无论有无符号,会被转化成int再参与+-*/% 运算

测试
char c = 1;
short s = 2;
cout << sizeof(c + s) << endl;
结果是4

无符号和有符号运算,结果会被转换成无符号

测试
unsigned s = 2;
int a = -3;
cout << sizeof(a + s) << endl;

int和int运算,结果还会是int,即使前面是long long
int a = 100000;
int b = 100000;
long long c = a * b;
cout << c << endl;
会越界

应写为long long c = (long long)a * b;

实数

float
double

字符

bool

结构体

  1. C++ 的类型
    1. 整数
    2. 实数
    3. 字符
    4. bool
    5. 结构体