
C/C++ 语法教程(3)——常量与运算符
常量与运算符
char 型变量转义字符表示
| 字符形式 | 含义 |
|---|---|
\n | 换行符 |
\t | 制表符(横向跳格) |
\v | 竖向跳格 |
\b | 退格 |
\r | 回车 |
\f | 走纸换行 |
\\ | 反斜杠 \ |
\' | 单引号 ' |
\ddd | $3$ 位八进制数所代表的字符 |
\xhh | $2$ 位十六进制所代表的的字符 |
常量表示
常见形式
#define M 109
const int N=100009;
一般建议用第二种(const)。
C/C++ 运算符
算术运算符
前面 $5$ 个是二元运算,后面两个是一元运算。
+:表示加法。-:表示减法。*:表示乘法。/:表示除法,对于两个数都是整型,输出整除结果(绝对值下取整),比如:
- $a = 5 / 3 = 1$
- $b = (-5) / 3 = -1$
- $c = 5 / (-3) = -1$
$d = (-5) / (-3) = 1$
如果有至少一个浮点型,则是浮点除法,也就是正常的除法。
%:表示取模,只对两个数都是整型有定义,比如:
- $e = 5 \% 3 = 2$
- $f = (-5) \% 3 = -2$
- $g = 5 \% (-3) = 2$
- $h = (-5) \% (-3) = -2$
++:有两种情况:a++表示返回 $a$ 的值,并使a=a+1。比如a=1,b=1;b+=(a++);则结果a=2,b=2。- 而
++a表示先使a=a+1,再返回 $a$ 的值。比如a=1,b=1;b+=(++a);则结果a=2,b=3。
--:同上,加法改成减法即可。
位运算符
仅针对整型:
&:二元运算,按位与,将两个数按存储的二进制位每位与(同为 $1$ 则为 $1$,否则为 $0$)。|:二元运算,按位或,将两个数按存储的二进制位每位或(同为 $0$ 则为 $0$,否则为 $1$)。^:二元运算,按位异或,将两个数按存储的二进制位每位异或(相同则为 $0$,不同则为 $1$,也就是不进位加法)。~:一元运算,按位取反,也就是每一位 $1$ 变 $0$,$0$ 变 $1$。>>:二元运算,x>>y表示 $x$ 右移 $y$ 位,负数右移一位就是 $x = (x – 1) /2$,正数则是 $y = y / 2$。<<:二元运算,x<<y表示 $x$ 左移 $y$ 位,正数在范围内就是乘以 $2$,超出范围与溢出相同。
一般左右移位数大于零,且对于 $x$ 为负数的情况较为复杂,一般不建议使用(也就是正常 $x,y > 0$)。
关系运算符
均为二元运算,返回值为 bool 型(整型)。
<:就是小于。>:就是大于。==:表示等于。<=:表示小于等于。>=:表示大于等于。!=:表示不等于。
逻辑运算符
&&:二元运算,同为 $1(true)$ 则返回 $1(true)$,否则返回 $0(false)$。||:二元运算,同为 $0(false)$ 则返回 $0(false)$,否则返回 $1(true)$。!:一元运算,$0(false)$ 和 $1(true)$ 取反。特殊用法:可以用if (!x)表示if (x==0),同理if (x)即表示if (x!=0)(一般只用于整型)。(if语句之后会细讲,这里仅做了解)
赋值运算符
返回值为左侧变量最终的值。
=:将右侧表达式的值赋给左侧的变量。+=:a+=b就是a=a+b。-=:a-=b就是a=a-b。*=:a*=b就是a=a*b。/=:a/=b就是a=a/b。%=:a%=b就是a=a%b。<<=:a<<=b就是a=a<<b。>>=:a>>=b就是a=a>>b。&=:a&=b就是a=a&b。|=:a|=b就是a=a|b。^=:a^=b就是a=a^b。
其他运算符
sizeof:前面讲过,用于计算数据类型所占字节数。Condition?X:Y:相当于if (Condition) X else Y;,if语句之后会细讲,这里仅做了解。,:按顺序执行语句,并返回最后一个语句的返回值。比如,return ++a,b--,c/=2,d*=3,就是依次执行四条语句,然后返回最终 $d$ 变量的值。.和->:用于调取类、结构体中的变量、函数,之后会细讲。Cast:用于强制类型转换,比如说int(x)表示将 $x$ 转为int类型,但并不是所有类型之间都可以转换,具体可以自己尝试。&:一元运算,用于获取变量地址,前面讲过。*:表示指向变量的指针,比如*val表示指向变量 $val$ 的指针。
预习工作
自己试验一下这些符号的优先级(也就是谁先运算)的问题。



Comments: 2
好像包含”<“的符號不能正常顯示?
说出来你可能不信,我重新发一遍就好了。