运算符
算数运算符
+ - * / %
要点:
除法中,两个数都是int,商有小数截取小数部分。被除数和除数中只有有一个或者两个都是浮点型数据,则商也是浮点型,不截取小数部分(eg:1 / 2=0 , 1.0 / 2 =0.5 , 1 / 2.0=0.5)
取余中,运算对象必须为整数,结果是整除后的余数,余数的符号与被除数相同(eg:13%-3=1 , -13%13=-1 , -13%-3=-1)
关系运算符
> >= < <= != ==
逻辑运算符
!(非) &&(并且) ||(或)
关系:
!真 假
!假 真
真&&真 真
真&&假 假
假&&真 假
假&&假 假
(一假即假)
真||假 真
假||真 真
真||真 真
假||假 假
(一真即真)
C语言对真假的处理:
非零是真
零是假
真是1表示
假是0表示
&&左边的表达式为假,右边的表达式肯定不会执行(eg:int k=20,m ; m=(1>2)&&(k=5);因为左边的表达式为假,右边的表达式不会执行,所以运行结果k=20,m=0)
不含有分号的是表达式,含有分号的是语句
| |左边的表达式为真,右边的表达式肯定不会执行
赋值运算符
= += *= /= -=
优先级别
算数>关系>逻辑>赋值
运算符知识
自增 自减 三目运算符 逗号表达式
自增(或者自减)
分类:
前自增 ----- ++i
后自增 ----- i++
区别:
前自增和后自增的异同:
相同:
最终都使i的值加1
不同:
前自增整体表达式的值是i加1之后的值
后自增整体表达式的值是i加1之前的值
举例:
为什么会出现自增:
代码更精炼,自增速度更快
学习自增要明白的几个问题:
1.我们编程时应该尽量屏蔽掉前自增和后自增的差别
2.自增表达式最好不要作为一个更大的表达式的一部分来使用(或者说 i++和++i单独成一个语句,不要把它作为一个完整复合语句的一部分来使用)
如以下错误写法:
int m=i++ + ++i + i + i++;//这样写不但是不规范的代码,而且是不可移植的代码
printf(“%d %d %d”,i++,++i,i);//同上
三目运算符
格式:
A?B:C
等价于
if(A)
B;
else
C;
逗号表达式
格式:
(A,B,C,D)
功能:
从左到右执行
最终表达式的值是最后一项的值
举例:
(注意:上图中j+2的值没有赋给j,j+2与j+=2不同)