其他¶
占几个字节,占多少位¶
在常见的竞赛环境中:int 通常是 4 字节,short 通常是 2 字节,long long 通常是 8 字节。
char 的大小按定义是 1 字节;一个字节至少 8 位,常见环境中为 8 位。
bool 的大小由实现决定,常见环境中是 1 字节。
由于历史原因,C++ 中布尔类型和字符类型会被视作特殊的整型。
整数类型一般按位宽有 5 个梯度:char, short, int, long, long long
C++ 标准只保证 `sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)` 以及各类型的最小范围。
`long` 在 Windows 64 位环境中通常是 32 位,在 macOS/Linux 64 位环境中通常是 64 位。
字符类型,char,signed char,unsigned char
底层存储的是字符编码值,常见英文字符通常使用 ASCII 对应的值
一般来说 signed char,unsigned char 不应用来存储字符,绝大多数情况下,这两种类型均被视作整数类型。
float,单精度浮点数,精度位数6~9位
double,双精度浮点数,精度位数15~17位
注意:写代码时,一般使用double
运算符优先级¶
简要记忆,由高到低,分别是
- 乘除模运算
*, /, %- 加减
+, -- 左移 右移
<<, >>- 比较大小
<, >, ==, !=- 按位与
&- 按位异或
^- 按位或
|- 逻辑与
&&- 逻辑或
||写代码时,建议加括号保证运算顺序的正确性。
unsigned 和 unsigned int 有什么区别¶
疑问,源于CSP-J 2019年初赛,这道试题的第8行代码
unsigned a[maxn];
这是什么东西,不是unsigned int, unsigned char, unsigned short吗?
官方写错了,不能够啊。
肯定是自己无知了。


原来,unsigned 自己独立使用的时候,就是unsigned int。
破案。
参考¶
- https://learn.microsoft.com/en-us/cpp/cpp/cpp-built-in-operators-precedence-and-associativity?view=msvc-170,C++ built-in operators, precedence, and associativity(完整的运算符优先级列表)
- https://oi-wiki.org/lang/var/#%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B,OI Wiki
- https://stackoverflow.com/questions/7176657/difference-between-unsigned-and-unsigned-int-in-c