C语言支持下面四种类型的运算
1.四则运算,+,-,*,/,%(除法取余数);
2.关系运算,<,>,<=, >=,<=, ==,!=
3.逻辑运算&&,||,!;
4.位运算(只操作数值0或1),&,|,^,>>,<<,~
四则运算(+,-,*,/,%)
1. 就是数学中的加,减,乘,除等运算;
2.遵循先乘除后加减的运算优先级;
3.可以使用括号改变运算顺序;(注意,C语言中的除法计算,除数不能为0)
示例分析
#include<stdio.h>
int main( )
{
int a = 5;
int b= 2;
double c = 3;
c = a / b; //c=0.5
printf("c = %f\n",c);
c = a % b; //c=1
printf("c = %f\n",c);
getchar();
return 0;
}
运行结果:
小结
1.整型数的除法运算结果会舍弃小数部分;
2.取余数(%)运算也是一种除法运算,结果为余数;
3.浮点数不能进行取余运算
关系运算(<,>,<=,>=, ==, !=);
1.比较两个值大小关系或相等关系的运算;
2.比较的结黒为逻辑值:真(1),假(0);
3.可以使用括号()改变关系运算的顺序
int a = 1;
int b =0; //在C语言中,=是赋值,==是比较判断两个数值是否相等;
int c=a== b; //先判断ab是否相等,由于a=1,b=0,ab不等,所以c=0;反之如果相等,c就为1;
示例分析
#include<stdio.h>
int main( )
{
int a=1;
int b=2;
int c=3;
int d=1;
/************判断ab是否相等“==”************/
c=a==b; //先判断是否相等,由于a=1,b=0,ab不等,所以c=0;
printf("c=%d\n",c);
c=a==d; //反之如果相等,c就为1;
printf("c=%d\n",c);
/************判断ab是否相等“==”************/
c=a!=b; //判断是否相等,不相等为1
printf("c=%d\n",c);
c=a!=d; //判断是否相等,相等为0
printf("c=%d\n",c);
/************四则运算与关系运算的混合运算************/
//四则运算与关系运算的混合运算,先分别计算a-b、a+b的运算结果,再对结果进行判断,
c= a-b >= a+b; //a-b=1-2=-1,a+b=1+2=3,-1<3,结果为假,就是0
printf("c=%d\n",c);
//仍然是四则运算与关系运算的混合运算,
c= a< b+c < b; //加减法的优先级比关系运算高,1<2+3<2,从左到右,1<5结果为1,1<2结果为1,所以最终结果为1
printf("c=%d\n",c);
c=(a<b)+(c<b); //由于加减法的优先级比关系运算高,利用括号(1<2),结果为1,(0<1),结果为1,1+1=2,所以1+1=2
printf("c=%d\n",c);
c= a< 2 < b; //1<2<2,从左到右1<2结果为假0,0<2结果为真1,最终结果为1
printf("c=%d\n",c);
getchar();
return 0;
}
运行结果:
小建议:如果不同类型的运算同属出现在一个表达式中,那么尽量使用()指明运算顺序
运算优先级(从高到底)
1.四则运算:正负号 >乘除运算 >加减运算;
2.关系运算:大小比较运算 >相等比较运算;
3.赋值操作
小结
1.整型数除法有两种:取商(/),取余(%),得到的结果依旧是整型;
2.浮点数除法与数学中除法运算相同,结果为浮点数;
3.不同运算的优先级不同,可使用括号改变运算优先级;
4.同一个表达式中应避免不同的运算类型(四则运算,关系运算)
课后练习
#include<stdio.h>
int main( )
{
int a = 1;
int b = 2;
int c=0;
c=a != b+a*b; //第一步:b+a*b=2+1*2=2+2=4;第二步:a != b+a*b即为1 != 4,1不等4,值为真1,所以c=1;
printf("c = %d\n",c);
c=a==b<c== b; //第一步:b<c=2<1,值为假0;
printf("c =%d\n",c);
}
运行结果