本节要掌握的内容:
1、赋值运算符
2、算术运算符
3、关系运算符
4、逻辑运算符
5、复合运算符
6、三目运算符
7、特殊运算符
8、运算符优先级
9、类型转换
什么是表达式?
运算符将运算对象连接起来的式子,就叫表达式。这里的运算对象,可以是常量、变量及其他表达式。
赋值运算符
赋值运算符是“=”,其作用是将赋值运算符右侧的表达式的值赋给其左侧的变量。
示例一:int a= 10;
a=20;
示例一中使用了两次赋值运算符“=”,第一次是初始化将a的初值设置为10,第二次是将a的值改变为20。赋值语句作用就是赋值。
示例二:int a=0,b=5,c=10;
a=b=c;
10=a;
a+b=c;
示例二中三种写法都是错的,赋值符不能一句代码符赋值两次。赋值符左面不能出现常量和常量表达式。
赋值符可以和算术运算符一起写。下面将算术运算符。
算术运算符
算术运算符(Arithmetic Operator)是程序语言中使用率最高的运算符,算术运算符包含了下图中的运算符:
1、“=,-,*” 和数学一样简单代码举例就行。
示例一:int a =10, b=2,c=0;
c=a+b;--将10+2,赋给c,c=12
c=a*b;--将10*2,赋给c,c=20
c=a-b;--将10-2,赋给c,c=8
示例一将加减乘都举例了,这里要注意表达式只能写“=”在右边。
“-”、“+”放在 数字前面代表正负号。
示例二:int a= -10;
示例二是将a的初值设为负10,其实正号一般情况下不用写,省略即可。
2、重点看取模“%”和取整“/”。
“%”的作用是取得余数。
示例一:int a=10, b=0;
b=a%3;
示例一将a取模3,即 10除3,商3,余1。b=余数1。要注意取的是余数。
示例二:int a=10,b=0;
b=a/3;
示例二将a取整3,即 10除3,商3,余1。b=商(2)。这里取的是商。
所有的算术运算符都可以和“=”一起使用,要注意只能写在右面。
关系运算符
关系运算符的功能是比较两个数值(或表达式)之间的大小和等于关系,通常用于流程控制语句。进行关系运算后,所运算的结果只有“真(1)”和“假(0)”两种情况.
下图是关系运算符的含义:
1、“>”、“<”
和数学里的大于小于一样。
示例一:int a =10,b=20;
printf("a>b=%d",a>b);
printf("a<b=%d",a<b);
示例一将a和b进行比较,结果是:a>b=0(假), a<b=1(真),假代表a不大于b,真代表a小于b。
示例二:int a =10,b=20;
printf("a+b>b=%d",a+b>b);
printf("a<b-a=%d",a <b-a);
示例二将算术运算符加入了,这样是可以的。关系运算符两边可以是表达式,a+b>b=1(真),a<b-a=0(假)b-a=10,10<10不成立。
2、“>=”、“<=”
和上面不一样的地方就是加了个“=”,表示的范围不同了。
示例一:int a =10;
printf("a<=10=%d",a<=10);
示例一将a和10比较,他表示的范围是小于10和等于10,都成立。所以结果是a<=10=1(真)。
3、“==”、“!=”
“==”和“!=”的范围最小,他们只能是等于和不等于。
示例一:int a =10,b=20;
printf("a==b=%d",a==b);
示例一判断a是否等于b,显然不相等,所以结果是:a==b=0(假)。
示例二:int a =10,b=20;
printf("a!=b=%d",a!=b);
示例二判断a是否不等于b,显然a是不等于b的,结果:a!=b=1(真)。
逻辑运算符
在C语言中,提供了3种逻辑运算符,即:&&(逻辑运算与)、||(逻辑运算或)、!(逻辑运算非)。
1、(与)&&
逻辑与“&&”,当它的两边结果都为1,值为1,只要有一边为0,值为0。
下图是“&&”的真值表:
示例一:printf("0&&1=%d",0&&1);
printf("1&&1=%d",1&&1);
示例一结果显然是0&&1=0(假),1&&1=1真。
示例二:int a=10,b=20;
printf("a<b && a>b=%d",a<b && a>b);
示例二将关系运算加进来,关系运算符结果是0和1。所以a<b为真,a>b为假,1&&0结果为0(假)。
2、(或)||
“||”,只要有一个表达式为1(真),值就为1(真),只有两边的表达式都为0时,值才为o(假)。下图是“||”的真值表:
示例一:int a=10,b=20;
printf("a<b || a>b=%d",a<b ||a>b);
示例一结果显然是:a<b || a>b=1,a<b结果为1(真),a>b结果为0(假),一边为1一边为0,结果为1。
3、(非)!
“!”,表达式结果为0 “!”值等于1,表达式结果为1“!”值等于0,就是取反。
示例一:int a=10,b=20;
printf("! (a<b) =%d",! (a<b ) );
示例一结果显然为:!(a<b)=0,a<b结果为1,1取“!” 结果为0。