运算符
1. 优先级: 算数 > 关系 > 逻辑 > 赋值
算数:+ - * / %
关系:>, >=, <, <=, !=, ==
逻辑:
!(非)
&&(与) 左边的表达式为0时,右边的表达式不执行
||(或) 左边的表达式为1时,右边的表达式不执行
赋值:= += -= *= /= a+=3 →a=a+3
特殊:自增自减 三目运算符 逗号表达式
自增【自减】
分类:
前自增 ++i
后自增 i++
异同:
相同:
最终都使i的值加1
不同:
前自增整体表达式的值是i加一后的值
后自增整体表达式的值是i加一前的值
1.编程应该尽量屏蔽掉前自增和后自增的差别
2.自增表达式最好单独成一个语句,不要把它作为一个完整复合语句的一部分来使用
三目运算符 A ? B : C 等价于 if(A) B;else C;
逗号表达式 A,B,C,D 从左到右执行
最终表达式的值是最右的值
2.除(/)及取余(%)的用法
除的运算结果和运算对象的数据类型有关
两个int就是int,有一个浮点就是浮点。
取余的运算对象必须是整数,结果是整除后的余数,符号与被除数相同
e.g. -13%3=-1 -13%-3=-1
取余 例子
#include <stdio.h>
int main ()
{
printf( "%d %d %d %d %d %d\n", 3%3, 13%-3, -13%3, -13%-3, -13%23, 3%5 );
return 0;
}
//结果:0 1 -1 -1 -13 3
逻辑运算
#include <stdio.h>
int main()
{
int i, k, m, n, j, l, o;
i = 10;
k = 20;
l = 20;
o = 20;
m = ( 3>2 )&&( k = 8 );
n = ( 1>2 )&&( l = 8 );
j = ( 1>2 )||( o = 8 );
printf("m=%d n=%d j=%d\nk=%d l=%d o=%d", m, n, j, k, l ,o);
return 0;
}
//结果:m=1 n=0 j=1 k=8 l=20 o=8
前自增和后自增的比较
#include <stdio.h>
int main()
{
int i, j, k, m;
i = j = 3;
k = i++;
m = ++j;
printf(" %d %d %d %d ",i,j,k,m);
//结果: 4 4 3 4
return 0;
}