目录
运算符和表达式——关系表达式
关系表达式,就是用关系运算符连接的两个表达式,实际上,关系运算符也就是比较运算符。同时,关系运算不要求数据类型,参与关系运算的两个运算量可以是任意类型的数据
当比较结果成立时,其结果为1,而当比较结果不成立时,其结果为0
运算符 | 举例 | 结果 |
< | 5<11 | 1 |
> | 5>11 | 0 |
< | 5<=11 | 1 |
> | 5>=11 | 0 |
== | 5==11 | 0 |
!= | 3!=5 | 1 |
在运算符中,等于之所以用两个等号表示,是因为如果只用一个等号表示的话,会与=(赋值)搞混
所以只有两个等号==表示等于,在只有一个等号的情况下,=表示赋值
从优先级来说,算术运算符的优先级要高于关系运算符的优先级,而在关系运算符中,表格中前四列的优先级要高于后两列的优先级
我们可以看几个例子
11+(5<11)*11 的值为22
11+5<11*5 ——16<55 —— 其值为1
如果要用代码来验证,那么——
#include<stdio.h>
void main()
{
printf("%d\n",5<11);
printf("%d\n",11+(5<11)*11);
printf("%d\n",11+5<11*11);
}
然后得到结果进行验证——
运算符和表达式——逻辑表达式
逻辑表达式是用逻辑运算符连接两个表达式,其中,参与逻辑运算的操作数为逻辑量,逻辑量没有太过严格的要求,整型,实型等都是可以的
其中,1表示真,0表示假,与关系表达式中是否成立有一点点类似
运算符 | 含义 | 举例 | 结果 |
! | 非 | !5 | 0 |
&& | 与 | 5&&11 | 1 |
|| | 或 | 5||11 | 1 |
在逻辑运算中,非零为真,零为假,因此逻辑运算不要求数据类型,任何类型的数据都可以参与逻辑运算
在逻辑运算优先级中,!>&&>| | ,为从右往左结合
来看——
int a=11, float b=5
! a —— 0
!(a<b) ——1
!a&&b —— 0
在表达上,C语言与数学不同的是,5<=X<=11,在C语言中,则需写为5<=X&&X<=11
但在C语言中,如果&&左侧为假,则不会再判断右侧真假;如果| |左侧为真,则不会在判断右侧真假。;类似于数学中和析取和合取,一旦出现假,那合取式必为假,一旦出现真,那合取式必为真
运算符和表达式——位运算表达式
与前面两个不同的是,位运算是对整型数据进行的运算,且符号位需要参与运算。
运算符 | 含义 | 举例 | 结果 |
& | 按位与 | 5%11 | 1 |
| | 按位或 | 5|11 | 15 |
^ | 按位异或 | 5^11 | 14 |
~ | 按位取反 | ~5 | -6 |
<< | 左移 | 5<<11 | 10240 |
>> | 右移 | 5>>11 | 0 |
#include<stdio.h>
void main()
{
printf("%d\n",5&11);
printf("%d\n",5|11);
printf("%d\n",5^11);
printf("%d\n",~5);
printf("%d\n",5<<11);
printf("%d\n",5>>11);
}