关系运算符及其优先次序
详情见表:
C语言运算符的优先级和结合性一览表_C语言中文网
- 为了表示逻辑量,在C的关系运算中,以1代表“真”,以0代表“假”。例如a=3,b=2,c=1时,关系表达式“(a>b)==c”为“真”(因为a>b的值为1,等于c的值),表达式的值为1。
- C程序中还允许把关系运算的结果(即1和0)看作和其他数值型数据一样,可以参加数值运算,或把他赋值给数值型变量。
逻辑运算符和逻辑表达式
&& 逻辑与 相当于and
|| 逻辑或 相当于or
! 逻辑非 相当于not
- 优先次序:
!(非)-> &&(与)-> ||(或)
- &&和||低于关系运算符,!高于算术运算符
!(非)-> 算术运算符 -> 关系运算符 -> &&(与)-> ||(或)-> 赋值运算符
- C语言编译系统在标识逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”,即将一个非零的数值认作为“真”。
- a=4,则!a的值为0。
- a=4,b=5,则a&&b的值为1。
- 5>3&&8<5-!0的值为0。
- 实际上,逻辑运算符两侧的运算对象也可以是字符型、实型或指针型等,系统最终以0和非0来判定它们属于“真”或“假”。
- ‘c’&&‘d’的值为1(因为‘c’和‘d’的ASCII值都不为0,按“真”处理)。
条件表达式
max = (a>b)? a : b ;
- 条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。例如 x ? ‘a’ : ‘b’ ;整型变量 x 的值若等于0,则条件表达式的值为‘b’。
- 表达式2和表达式3的类型也可以不同,此时表达式的值的类型为二者中较高的类型。例如 x>y? 1:1.5 ,如果x《 y,则表达式的值为1.5;若x > y,值应为1,由于1.5是实型,比整型高,因此,将1转换成实型值1.0。
- char可以直接比大小