C语言符号篇
Nevermore Lang
# 注释
注释的处理是在预处理阶段用空格进行替代。
注释不支持嵌套,
*/
总会与其最近的/*
进行匹配。
# \
- 一行代码太长,可以使用
\
进行续行。符号后不可以带任何符号(如空格)。 - 进行字符转义。
# 字符‘ ’
- C99规定,‘1’称为整型字符常量,看成是int。

char a = '1' ;本质是发生了截断。
char a = ‘1234’;正好是4字节,不会报错。
# 位运算
|
: 按位或&
:按位与^
:按位异或~
:按位取反<<
(>>
) : 左移一位(右移一位)——直接操作数据的补码。- 左移:最高位被丢弃,最低位补零
- 右移:
- 有符号数:最低位丢弃,最高位补符号位的值(负数补1,正数补0)——算术右移(符号位参与,不一定是除2)
- 无符号数:最低位丢弃,最高位补0.——逻辑右移(除2)
数据在CPU中运算,会将数据加载到寄存器中进行操作,寄存器的位数为32位或64位。会进行整型提升。

# /和%
C语言有如下几种取整方式
- 浮点数取整数向0方向取整。——trunc(),这是类型赋值默认的取整方式
- 向数轴负方向取整——floor()
- 向数轴正方向取整——ceil()
- 四舍五入取整——round()
%
的结果是取决于/
的,而/
的结果取决于取整的方式。C语言使用的是向0取整,因此-10/3=-3 —— -10 = -3 * 3 + (-1)
取余:/
的结果向0取整;
取模:/
的结果向负轴取整。
正数(符号相同的两个数)的/
取整方向是一致的,运算结果都是一样的,因此正数的取余和取模是等价的。