【C语言】运算符
算数运算符
‘+’ ‘-’ ‘*’ ‘/’ ‘%’
/
如果使用两个整数进行除法运算,结果为整数。如果使用浮点数运算,结果为小数。
5/3=1
5.0/3.0=1.666667(保留六位小数)
%
取余只能使用整数进行运算不能使用浮点数
5%3=2
5.0%3.0出错
单目运算符与双目运算符
我们将进行运算的数称为操作对象。
1 + 2 左右两边都有操作数的运算符叫做双目运算符。
正负号只有一个操作数叫做单目运算符。
表达式
用运算符和括号将操作数连接起来的式子,我们称之为表达式。
运算符的优先级和结合性
注1:优先级相同的运算符,运算次序由结合性决定。
比如 3 * 4 / 5 % 6,其中乘号、除号和求余运算符在同一优先级,结合性是“左到右”,因此先计算 3 * 4,再计算 / 5,最后计算 % 6
再如 -i++,符号和自增运算符在同一优先级,结合性是“右到左”,因此 -i++ 相当于 -(i++)
注2:* 目运算符是指操作数的个数,比如单目运算符只有一个操作数,双目运算符有两个操作数,而三目运算符则有三个操作数。
注3:通过使用小括号可以提升表达式的优先级至最高。
比如 (1 + 2) * (3 - 4),其中加号、减号运算符的优先级本身是要低于乘号运算符的,但由于使用了小括号,且结合性均是“左到右”,所以先计算 (1 + 2),再计算 (3 - 4),最后才将前两者的结果相乘。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
int i,j,k;
i=1+2;
j=1+2*3;
k=i+j+-1+pow(2,3); //3+7+(-1)+8=17
printf("i=%d\n",i);
printf("j=%d\n",j);
printf("k=%d\n",k);
system("pause");
return 0;
}
类型转换
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
printf("整型输出:%d\n",1+2.0);
printf("浮点型输出:%f\n",1+2.0);
system("pause");
return 0;
}
由上面的例子可以看出,数据类型不同进行计算会出现错误,要是想要输出结果为自己想要的数据类型就要进行数据类型转换。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
printf("整型输出:%d\n",1+(int)2.0);
printf("浮点型输出:%f\n",1+2.0);
system("pause");
return 0;
}
注意,高精度向低精度的转换会损失精度。
浮点型1.8强制转换为整型就会丢失精度0.8变成1。
关系运算符
使用关系运算符来比较两个数的大小关系
优先级高:
< 小于
<= 小于等于
> 大于
>= 大于等于
优先级低:
== 等于
!= 不等于
关系表达式
用关系表达式将两边的变量、数据或表达式连接起来,称之为关系表达式。
关系表达式只会返回两个逻辑值 0或1 (假或真)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
int a=5,b=3;
printf("%d\n",1<2); //真
printf("%d\n",a>b); //真
printf("%d\n",a<=b+1); //假
printf("%d\n",'a'+'b'<='c'); //假
printf("%d\n",(a=3)>(b=5)); //假
system("pause");
return 0;
}
逻辑运算符
! 非 取反
&& 与 同真为真 其中一个为假结果为假
|| 或 其中一个为真结果为真,同假为假
逻辑表达式
用逻辑运算符将两边的变量、数据或表达式连接起来,称为逻辑表达式:
3>1&&1<2 为真
3+1||2==0 为真 任何非0的数都为真
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
int a=5,b=3;
printf("%d\n",3>1&&1<2);
printf("%d\n",3+1||2==0);
printf("%d\n",!(a+b));
printf("%d\n",!0+1<1||!(3+4));
printf("%d\n",'a'-'b'&&'c');
system("pause");
return 0;
}
短路求值
- 短路求值又称最小化求值,是一种逻辑运算符的求值策略。只有当第一个运算数的值无法确定逻辑运算的结果时,才对第二个运算数进行求值。
- C语言对于逻辑与和逻辑或采用短路求值的方式。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
int a=3,b=3;
(a=0)&&(b=5); //逻辑与,左边a赋值给0为假不成立右边就不会再进行运算
printf("a=%d,b=%d\n",a,b);
(a=1)||(b=5); //逻辑或,左边a赋值给1大于0为真,整个式子已经为真,右边就不再进行运算
printf("a=%d,b=%d\n",a,b);
system("pause");
return 0;
}
上一篇: PAT乙级考试-1004成绩排名