运算符
分类
算术运算符
加(+) 减(-) 乘(*) 除(/) 取余(%)
关系运算符
大于(>) 大等于(>=) 小于(<) 小等于(<=) 等于(==) 不等于(!=)
逻辑运算符
非( !) 并且( &&) 或(||)
赋值运算符
= += *= /= -=
优先级别
算术>关系>逻辑>赋值
注意
除法,取余
1.除法运算的结果与运算对象的数据类型有关
两数都是int,结果int 16/5==3
商有小数,截取小数
被除数与除数中只要有1个或2个为float,商也为float 16/5.0==3.20000
2.取余运算对象必须为整数,余数符号同被除数
n-1%n==n-1 3.5%2 (X)
13%31 13%-31
且与或
真&&真——真 真&&假——假 假&&假——假
真||假——真 假||真——真 真||真——真 假||假——假
&&左边是假,右边不执行
||左边是真,右边不执行
C语言对真假的处理
非零为真,零为假,1真0假
三目运算符
A?B:C 意义:
A?B:C
if (A)
B;
else
C;
逗号表达式
格式
(A,B,C,D)
功能
从左向右执行,最终表达式的值为最后一项的值
eg:
#include<stdio.h>
int main()
{
int i;
int j=2;
i=(j++,++j,j+2,j-3);
printf("%d\n",i);
return 0;
}
运行结果:i=1,j=4
补充:自增自减
前自增:++i
后自增:i++
相同点:最终都是 i+1
不同点:前自增整体表达式的值为 i+1后的值,后自增整体表达式的值为 i+1前的值
eg: i=j=3; k=i++; m=++j
printf(“%d,%d,%d,%d”,i,j,k,m);
i=4,j=4,k=3,m=4
为什么自增
代码更精炼,自增速度更快
学习自增需明白几个问题
1.尽量屏蔽掉前自增与后自增的差别
2.自增表达式最好不要作为一个更大表达式的一部分使用,或 i++和++i 单独成语句,不要作为一个完整复合语句的一部分来使用
eg: m=i++ + ++i + i + i++ 不规范代码,不可移植代码
顺序点:,();
printf(“%d,%d,%d”,i++,++i,i); 不规范代码,不可移植代码