程序的流程走向是由条件表达式的值来控制的,c语言中有三种表示条件的方式(3种条件表达式):关系表达式(关系运算符)、逻辑表达式、广义逻辑量。
1.关系表达式(关系运算符连接起来的表达式)
(1)作用:用来表示大小关系,输出的结果是逻辑值,只有两种取值,成立的话为真(输出1),不成立为假(输出0)。
(2)含义:关系表达式就是用关系运算符表示的关系运算。关系运算符就是两个数据(变量与变量或常量与常量)之间大小关系的比较,白话讲就是><=那些符号。
(3)关系运算符:(一共有6种)
等于(==)、不等于(!=)、小于(<)、小于等于(<=)、大于(>)、大于等于(>=)。
备注:等于是“==”,不是“=”,“=”是赋值运算符。
ex:==是一个关系运算符,a%b==0是一个关系表达式,如果a%b的值是0就输出为1(真),反之为0(假)
2.逻辑表达式
c语言中关系表达式一般只能表示单一的条件,需要表示复合的条件,需要用到逻辑表达式。比如在c语言中0<x<5这样的式子不能直接表达,需要分步骤,也就是0<x&&x<5,其中,0<x&&x<5,就是一个逻辑表达式。
综上,逻辑表达式就是由变量、常量和逻辑关系(逻辑运算符与&&或||非!和关系运算符组成),比如说上面的5是整型常量,x是变量,x和&&还有<这些组成的式子是逻辑关系。
(1)逻辑运算符:(3种)
1.逻辑与&&:A&&B,A、B均为真才真。
2.逻辑或||:A||B,A、B有个是真就真。
3.逻辑非!
(2)逻辑运算符优先级:
!非>&&与>||或
3.逻辑量(广义逻辑量)
逻辑量有两种,一种狭义一种广义。狭义逻辑量包括逻辑常量(0和1)、逻辑变量(存储逻辑常量的变量,就是存1/0的变量)和结果是逻辑值的逻辑表达式(也就是上面提到的关系表达式和逻辑表达式),算是包括了前面说的两种,所以概括表示条件的方法时候说逻辑量只说广义逻辑量和关系表达式还有逻辑表达式,或者直接说逻辑量、逻辑表达式和关系表达式。
广义逻辑量是指c语言中为了提高编程灵活性,拓展狭义逻辑量的范畴,广义逻辑量包括任意整型、实型、字符型、枚举型和指针型的数据或者表达式参与逻辑运算。
任意广义逻辑量的值为非0就看做真(1),就是不管是什么数,正的负的之类的,只要不为0,它的结果就是1。
备注:字符常量如何判断是否为0,'0'不为0,只有'\0'才是0,因为字符常量是根据ASCII判断的。
热知识:'0'的ASCII码为48,'\0'的ASCII才是0。
4.容易弄混的概念
(1)逻辑值与逻辑量
- 逻辑值:关系表达式或逻辑表达式的结果就是逻辑值,逻辑值只有两种:1和0。
- 逻辑量:参与任何逻辑运算或者自身存在的量为逻辑量,也只有两种,逻辑值是非0的逻辑量为1,反之为0。
(2)“x=0”与“x==0”
前者是赋值语句,给x赋值为0,后者是关系表达式,x的值与0进行比较,如果相等结果就为真1,反之为假0。
我编写了一个代码,键盘输入一个数x,查看输出结果,可以发现我输入0,运行是x==0的式子,那是因为x=0是一个赋值语句,这个if的条件恒假,因此程序的任何输出结果都与其无关。
而下面的两个if的条件都是为真的,不管你输入什么,这两条语句都会printf出来。