C语言中为了方便运算,提供了一系列操作符,其中有⼀组操作符叫:算术操作符,分别是:+ 、- 、* 、\ 、% ,都是双目操作符(指需要两个操作数的运算符)。
1.1 + 和 -
+ 和 - 用来完成加法和减法。
#include <stdio.h>
int main()
{
int x = 4 + 22;
int y = 61 - 23;
return 0;
}
1.2 *
运算符 * 用来完成乘法。
#include <stdio.h>
int main()
{
int num = 5;
printf("%d\n", num * num); //输出为25
}
1.3 /
运算符 / 用来完成除法。除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。
#include <stdio.h>
int main()
{
int d = 6 / 4;
float f = 6 / 4;
float f1 = 6.0 / 4.0;
printf("d = %d\n", d); //输出结果是1
printf("f = %f\n", f); //输出结果是1.0
printf("f1 = %f\n", f1); //输出结果是1.5
}
上面示例中,尽管变量 f 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,⽽不是1.5 。原因就在于 C 语言里面的整数除法是整除,只会返回整数部分,丢弃小数部分。
如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数,这时 C 语言就会进行浮点数除法。
#include <stdio.h>
int main()
{
float x = 6.0 / 4; // 或者写成 6 / 4.05
printf("%f\n", x); // 输出 1.500000
return 0;
}
上面示例中, 6.0 / 4 表示进行浮点数除法,得到的结果就是 1.5 。
再看一个例子:
#include<stdio.h>
int main()
{
int score =5;
score =(score / 20)* 100;
return 0;
}
上面的代码,你可能觉得经过运算,score会等于25,但是实际上score等于0。这是因为score / 20是整除,会得到一个整数值0,所以乘以100后得到的也是0。
为了得到预想的结果,可以将除数20改成20.0,让整除变成浮点数除法。
正确写法
#include<stdio.h>
int main()
{
int score =5;
score =(score / 20.0)* 100;
return 0;
}
1.4 %
运算符%表示取模运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。
#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
}
上面示例中,第一个运算数的正负号(11或-11)决定了结果的正负号。