运算符与表达式
运算符与表达式-【恒星】
运算符
- 算术运算符:+、-、*、/、%、++、--
- 赋值运算符:=、+=、-=、*=、/=、%=
- 关系运算符:==、!=、>、<、>=、<=
- 逻辑运算符:&&、||、!
- 位运算符:&、|、~、^ << >>
- 其他运算符
- 取地址:&
- 取地址指向的值:*
- 三目运算符:? :
- 运算符的优先级:()
表达式
-
一目运算:只对一个参数运算的表达式;
!a逻辑非~a位非a++自增a--自减&a取地址*a取地址指向的值
-
二目运算:对两个参数运算的表达式;
a + 1两值算术运算:+、-、*、/、%a = 1赋值运算:=、+=、-=、*=、/=、%=a == 1关系运算:==、!=、>、<、>=、<=a && 1逻辑运算:&&、||、!a & 1位运算:&、|、^
-
三目运算:对三个参数运算的表达式;
a ? 1 : 2三目运算:? :
算术运算
算术运算符包括:
- 加
+:求两数之和; - 减
-:求两数之差; - 乘
*:求两数乘积; - 除
/:求两数相除结果(可能有小数),但当两数都为整数,结果是整数商(保留整数部分,舍去小数部分); - 求余
%:求两数相除之后的余数; - 自增
++:将变量增加 1; - 自减
--:将变量减少 1;
自增和自减分前后:
- 前自增
++a:先将 a 加 1 后,再参与其他运算; - 后自增
a++:先将 a 原来的值参与其他运算,再加 1; - 前自减
--a:先将 a 减 1 后,再参与其他运算; - 后自减
a--:先将 a 原来的值参与其他运算,再减 1;
int a = 0;
a++;
printf("%d\n", a); // 1
printf("%d\n", a++); // 1
printf("%d\n", a); // 2
int b = 0;
++b;
printf("%d\n", b); // 1
printf("%d\n", ++b); // 2
printf("%d\n", b); // 2
int c = (++a) + (b++);
printf("%d\n", a); // 3
printf("%d\n", b); // 3
printf("%d\n", c); // 5
赋值运算
赋值运算符包括:
- 等于
=:将右边的值赋给左边的变量; - 加等于
+=:a += 3是a = a + 3的简写; - 减等于
-=:a -= 3是a = a - 3的简写; - 乘等于
*=:a *= 3是a = a * 3的简写; - 除等于
/=:a /= 3是a = a / 3的简写; - 模等于
%=:a %= 3是a = a % 3的简写;
隐式转换和显示转换
- 隐式转换:就是编译器自动转换。
- 显示转换:就是编写代码要求强制转换。
- 数据类型从低级到高级的转换由编译器自动转换。
- 数据类型级别从高到低的顺序是:
- double
- float
- long
- int
- short
- char
int a = 1;
long long b = 231232131321;
b = a; // 隐式转换
a = (int)b; // 显示转换
// printf("%lld %d", a, b); // 未显示转换会警告
printf("%lld %d", (long long)a, (int)b); // 显示转换

浙公网安备 33010602011771号