算术运算符
写代码嘛,肯定少不了计算,C中也提供了很多运算符,其中有一组就是这篇要介绍的算术运算符。
运算符也叫操作符,都是一样的,翻译不同而已
算术运算符分别是+
,-
,*
,\
,%
,都是双目运算符。
双目运算符
+和-
顾名思义,用来算加减法的运算符,它们都是有两个操作数的,位于操作符两端的就是它们的操作数,这种运算符就是双目运算符。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 50;
int b = 60;
printf("%d+%d=%d",a,b,a+b);
return 0;
}
输出结果:50+60=110
*
用法和上面一样,表示乘法而已,就不再赘述了。
/
符号两端都是整数的话,执行整数除法,也就是求商,结果也是整数
include <stdio.h>
int main()
{
float x = 6 / 4;
int y = 6 / 4;
printf("%f\n", x); // 输出 1.000000
printf("%d\n", y); // 输出 1
return 0;
}
上面示例中,尽管变量 x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,⽽不是
1.5 。原因就在于 C 语言里面的整数除法是整除,只会返回整数部分,丢弃小数部分。
如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数,这时 C 语言就会进行浮点数除法。
#include <stdio.h>
int main()
{
float x = 6.0 / 4; // 或者写成 6 / 4.0
printf("%f\n", x); // 输出 1.500000
return 0;
}
%
上面是取商,这个是取余,但要注意的是,这个运算符只能用于整数,不适用于浮点数。
#include <stdio.h>
int main()
{
int x = 6 % 4; //2
return 0;
}
对于负数求模,结果的正负号由第⼀个运算数的正负号决定。
#include <stdio.h>
int main()
{
printf("%d\n", 11 % -5); // 1
printf("%d\n",-11 % -5); // -1
printf("%d\n",-11 % 5); // -1
return 0;
}
=
赋值运算符,不是平时数学中的等于号,是⼀个随时可以给变量赋值的操作符。
在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。
int a = 100;//初始化
a = 200;//赋值,这⾥使⽤的就是赋值操作符
也支持连续赋值,从右向左依次赋值的。但是并不推荐,不便于理解,更不便于调试,万一出错不好找。
复合赋值符
在写代码时,我们经常可能对⼀个数进行自增、自减的操作
复合运算符帮我们化简了这一步
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 50;
a = a + 1;
printf("%d\n",a);
a += 1;
printf("%d", a);
return 0;
}
结果为51
52
//可见a+=1 等于a=a+1
下面的同理
+= -=
*= /= %=
//下⾯的操作符暂时不讲
>>= <<=
&= |= ^=
单目操作符
++、--、+(正)、-(负)
++
和--
是自增和自减的操作符,分为前置和后置
前置
int a = 10;
int b = ++a;//++的操作数是a,是放在a的前⾯的,就是前置++
//等于 a+=1; b=a;
printf("a=%d b=%d\n",a , b); //a=11 b=11
计算⼝诀:先+1,后使用;
自减同理
后置
int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
//等于 b=a;a+=1;
printf("a=%d b=%d\n",a , b);
计算⼝诀:先使用,后+1;
自减同理
+和-
这里的+
是正号,-
是负号,都是单目操作符。
+
对正负没影响,可以完全忽略它。
int a=10 等于 int a=+10
-
改变值的正负号,负数的前⾯加上 - 就会得到正数,正数的前面加上 - 会得到负数。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = -50,b=99;
printf("%d %d", -a,-b);
return 0;
}//50 -99
强制类型转换
在要转换的数据前面加括号,里面写要转换的类型就行
int a = 3.14;
//a的是int类型, 3.14是double类型,两边的类型不⼀致,编译器会报警告
int a = (int)3.14;//意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分
强制类型转换都是万不得已的时候使⽤,能不用尽量不用。
———————————————————————————————————————————
希望对你有所帮助~