11.4 运算符
算术操作符
+, -, *, /, %
以上是双面操作符,即操作符两边都需要有表达式
tips:
- 取余和除法右边需保证为非0。
- 如果想要得到浮点数,两边至少有一个数据需要为浮点型
#include <stdio.h>
int main()
{
//wrong:
float x = 6 / 4;
int y = 6 / 4;
printf("%f\n", x); // 输出 1.000000
printf("%d\n", y); // 输出 1
//right:
float z = 6.0 / 4; // 或者写成 6 / 4.0
printf("%f\n", x); // 输出 1.500000
return 0;
}
- 取余操作只对整数
- 负数取余正负号有左边运算数的正负号决定
赋值操作符
=
是一个随时可以给变量赋值的操作符。
int a = 100;//初始化
a = 200;//赋值,这⾥使⽤的就是赋值操作符
也可以连续赋值(不推荐)
int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//连续赋值,从右向左依次赋值的。
复合赋值符
int a = 10;
a += 3;//等价于a = a+3
a -= 2;//等价于a = a-2
还有
+= -=
*= /= %=
>>= <<=
&= |= ^=
单目操作符
++ --
前置
int a = 10;
int b = ++a;
printf("a=%d b=%d\n",a , b);//11 11
//等价于:
int a = 10;
a = a+1;
b = a;
printf("a=%d b=%d\n",a , b);
后置
int a = 10;
int b = a++;
printf("a=%d b=%d\n",a , b);//11 10
//等价于:
int a = 10;
int b = a;
a = a+1;
printf("a=%d b=%d\n",a , b);
--
同理
+
对正负值没有影响
-
可以改变正负号
不同的运算符之间有不同的优先级
强制类型转换
int a = 3.14;//3.14为浮点型,不能赋值给整型 ,报警
int a = (int)3.14;//将3.14强制类型转换为int后赋值,无报警
如非必要,一般不用。