C/C++ 语法教程(3)——常量与运算符
Contents
常量与运算符
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
好像包含”<“的符號不能正常顯示?
说出来你可能不信,我重新发一遍就好了。