11.4

发布时间 2023-11-04 23:33:27作者: 威猛彪悍大甜妹

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后赋值,无报警

如非必要,一般不用。