C/C++ 语法教程(3)——常量与运算符

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$ 个是二元运算,后面两个是一元运算。

  1. +:表示加法。

  2. -:表示减法。

  3. *:表示乘法。

  4. /:表示除法,对于两个数都是整型,输出整除结果(绝对值下取整),比如:

  • $a = 5 / 3 = 1$
  • $b = (-5) / 3 = -1$
  • $c = 5 / (-3) = -1$
  • $d = (-5) / (-3) = 1$

    如果有至少一个浮点型,则是浮点除法,也就是正常的除法。

  1. %:表示取模,只对两个数都是整型有定义,比如:
  • $e = 5 \% 3 = 2$
  • $f = (-5) \% 3 = -2$
  • $g = 5 \% (-3) = 2$
  • $h = (-5) \% (-3) = -2$
  1. ++:有两种情况:

    1. a++ 表示返回 $a$ 的值,并使 a=a+1。比如 a=1,b=1;b+=(a++); 则结果 a=2,b=2
    2. ++a 表示先使 a=a+1,再返回 $a$ 的值。比如 a=1,b=1;b+=(++a); 则结果 a=2,b=3
  2. --:同上,加法改成减法即可。

位运算符

仅针对整型:

  1. &:二元运算,按位与,将两个数按存储的二进制位每位与(同为 $1$ 则为 $1$,否则为 $0$)。
  2. |:二元运算,按位或,将两个数按存储的二进制位每位或(同为 $0$ 则为 $0$,否则为 $1$)。
  3. ^:二元运算,按位异或,将两个数按存储的二进制位每位异或(相同则为 $0$,不同则为 $1$,也就是不进位加法)。
  4. ~:一元运算,按位取反,也就是每一位 $1$ 变 $0$,$0$ 变 $1$。
  5. >>:二元运算,x>>y 表示 $x$ 右移 $y$ 位,负数右移一位就是 $x = (x – 1) /2$,正数则是 $y = y / 2$。
  6. <<:二元运算,x<<y 表示 $x$ 左移 $y$ 位,正数在范围内就是乘以 $2$,超出范围与溢出相同。

一般左右移位数大于零,且对于 $x$ 为负数的情况较为复杂,一般不建议使用(也就是正常 $x,y > 0$)。

关系运算符

均为二元运算,返回值为 bool 型(整型)。

  1. <:就是小于。
  2. >:就是大于。
  3. ==:表示等于。
  4. <=:表示小于等于。
  5. >=:表示大于等于。
  6. !=:表示不等于。

逻辑运算符

  1. &&:二元运算,同为 $1(true)$ 则返回 $1(true)$,否则返回 $0(false)$。
  2. ||:二元运算,同为 $0(false)$ 则返回 $0(false)$,否则返回 $1(true)$。
  3. !:一元运算,$0(false)$ 和 $1(true)$ 取反。特殊用法:可以用 if (!x) 表示 if (x==0),同理 if (x) 即表示 if (x!=0)(一般只用于整型)。(if 语句之后会细讲,这里仅做了解)

赋值运算符

返回值为左侧变量最终的值。

  1. =:将右侧表达式的值赋给左侧的变量。
  2. +=a+=b 就是 a=a+b
  3. -=a-=b 就是 a=a-b
  4. *=a*=b 就是 a=a*b
  5. /=a/=b 就是 a=a/b
  6. %=a%=b 就是 a=a%b
  7. <<=a<<=b 就是 a=a<<b
  8. >>=a>>=b 就是 a=a>>b
  9. &=a&=b 就是 a=a&b
  10. |=a|=b 就是 a=a|b
  11. ^=a^=b 就是 a=a^b

其他运算符

  1. sizeof:前面讲过,用于计算数据类型所占字节数。
  2. Condition?X:Y:相当于 if (Condition) X else Y;if 语句之后会细讲,这里仅做了解。
  3. ,:按顺序执行语句,并返回最后一个语句的返回值。比如,return ++a,b--,c/=2,d*=3,就是依次执行四条语句,然后返回最终 $d$ 变量的值。
  4. .->:用于调取类、结构体中的变量、函数,之后会细讲。
  5. Cast:用于强制类型转换,比如说 int(x) 表示将 $x$ 转为 int 类型,但并不是所有类型之间都可以转换,具体可以自己尝试。
  6. &:一元运算,用于获取变量地址,前面讲过。
  7. *:表示指向变量的指针,比如 *val 表示指向变量 $val$ 的指针。

预习工作

自己试验一下这些符号的优先级(也就是谁先运算)的问题。

 

点赞 0

Comments: 2

  1. 头像 skylee03说道:

    好像包含”<“的符號不能正常顯示?

Add your comment