清华大学出版社 TSINGHUA UNIVERSITY PRESS 例如: (a>b)&&(x>y)可写成a>b&&x>y (a==b)l(x==y) 可写成a==blx==y (a)(a>b) 可写成!aa>b 5.2.2逻辑表达式 如前所述,逻辑表达式的值应该是一个逻辑量“真” 或“假”。c语言编译系统在给出逻辑运算结果时, 以数值1代表“真”,以0代表“假”,但在判断 一个量是否为“真”时,以0代表“假”,以非0 代表“真”。即将一个非零的数值认作为“真”。 例如:
例如: (a>b) && (x>y)可写成a>b && x>y (a==b)||(x==y) 可写成a==b||x==y (!a)||(a>b) 可写成 !a||a>b 5.2.2 逻辑表达式 如前所述,逻辑表达式的值应该是一个逻辑量“真” 或“假”。c语言编译系统在给出逻辑运算结果时, 以数值1代表“真”,以0代表“假”,但在判断 一个量是否为“真”时,以0代表“假”,以非0 代表“真”。即将一个非零的数值认作为“真”。 例如:
清华大学出版社 TSINGHUA UNIVERSITY PRESS (1)若a=4,则:a的值为0。因为a的值为非0,被认作 “真”,对它进行“非”运算,得“假”,“假” 以0代表。 (2)若a=4,b=5,则a&&b的值为1。因为a和b均为 非0,被认为是“真”,因此a&&b的值也为 “真”,值为1。 (3)a、b值同前, ab的值为1。 (4)a、b值同前, !ab的值为1。 (5)4&&0川2的值为1。 通过这几个例子可以看出,由系统给出的逻辑运算 结果不是0就是1,不可能是其他数值。而在逻辑 表达式中作为参加逻辑运算的运算对象(操作数)
(1) 若a=4,则!a的值为0。因为a的值为非0,被认作 “真”,对它进行“非”运算,得“假”,“假” 以0代表。 (2) 若a=4,b=5,则a&&b的值为1。因为a和b均为 非0,被认为是“真”,因此a&&b的值也为 “真”,值为1。 (3) a、b值同前, a||b的值为1。 (4) a、b值同前, !a||b的值为1。 (5) 4&&0||2的值为1。 通过这几个例子可以看出,由系统给出的逻辑运算 结果不是0就是1,不可能是其他数值。而在逻辑 表达式中作为参加逻辑运算的运算对象(操作数)
清华大学出版社 TSINGHUA UNIVERSITY PRESS 可以是0(“假”)或任何非0的数值(按“真”对待)。如 果在一个表达式中不同位置上出现数值,应区分哪些 是作为数值运算或关系运算的对象,哪些作为逻辑运 算的对象。例如: 5>3&&8<4-0 表达式自左至右扫描求解。首先处理“5>3”(因为关系 运算符优先于&&)。在关系运算符两侧的5和3作为数 值参加关系运算,“5>3”的值为1。再进行 “1&&8<4-0”的运算,8的左侧为“&&”,右侧为“<” 运算符,根据优先规则,应先进行“<”的运算,即先 进行“8<4-!0”的运算。现在4的左侧为“<”,右侧为 “_”运算符,而“_”优先于“<”,因此应先进行“4-0” 的运算,由于“!”的级别最高,因此先进行“0”的运 算,得到结果1。然后进行“4-1”的运算,得结果3, 再进行“8<3”的运算,得0,最后进行“1&&0”的运 日0
可以是0(“假”)或任何非0的数值(按“真”对待)。如 果在一个表达式中不同位置上出现数值,应区分哪些 是作为数值运算或关系运算的对象,哪些作为逻辑运 算的对象。例如: 5>3 && 8<4-!0 表达式自左至右扫描求解。首先处理“5>3”(因为关系 运算符优先于&&)。在关系运算符两侧的5和3作为数 值参加关系运算,“5>3”的值为1。再进行 “1&&8<4-!0”的运算,8的左侧为“&&”,右侧为“<” 运算符,根据优先规则,应先进行“<”的运算,即先 进行“8<4-!0”的运算。现在4的左侧为“<”,右侧为 “-”运算符,而“-”优先于“<”,因此应先进行“4-!0” 的运算,由于“!”的级别最高,因此先进行“!0”的运 算,得到结果1。然后进行“4-1”的运算,得结果3, 再进行“8<3”的运算,得0,最后进行“1&&0”的运 算,得0
清华大学出版社 TSINGHUA UNIVERSITY PRESS 实际上,逻辑运算符两侧的运算对象不但可以是0和 1,或者是0和非0的整数,也可以是任何类型的数 据。可以是字符型、实型或指针型等。系统最终以 0和非0来判定它们属于“真”或“假”。例如 'c'&&'d 的值为1(因为‘c'和‘d'的asc值都不为0,按“真” 处理)。 在逻辑表达式的求解中,并不是所有的逻辑运算符 都被执行,只是在必须执行下一个逻辑运算符才能 求出表达式的解时,才执行该运算符。例如:
实际上,逻辑运算符两侧的运算对象不但可以是0和 1,或者是0和非0的整数,也可以是任何类型的数 据。可以是字符型、实型或指针型等。系统最终以 0和非0来判定它们属于“真”或“假”。例如 'c' && 'd' 的值为1(因为‘c’和‘d’的ascII值都不为0,按“真” 处理)。 在逻辑表达式的求解中,并不是所有的逻辑运算符 都被执行,只是在必须执行下一个逻辑运算符才能 求出表达式的解时,才执行该运算符。例如:
清华大学出版社 TSINGHUA UNIVERSITY PRESS (1)a&&b&&c只有a为真(非0)时,才需要判别b的值, 只有a和b都为真的情况下才需要判别c的值。只要a为 假,就不必判别b和c(此时整个表达式己确定为假)。 如果a为真,b为假,不判别c。见图5.3。 (2)abc只要a为真(非0),就不必判断b和c;只有a为假, 才判别b;a和b都为假才判别c。见图5.4。 0(假) 非0(真) 非0(真) 0(假) 0(假) 非0(真) 非0(真) 0(假) 0(假) 非0(真) 非0(真) 0(假) 1(真) 0(假) 0(假) 1(真) 图5.3 图5.4
(1) a && b && c只有a为真(非0)时,才需要判别b的值, 只有a和b都为真的情况下才需要判别c的值。只要a为 假,就不必判别b和c(此时整个表达式已确定为假)。 如果a为真,b为假,不判别c。见图5.3。 (2) a||b||c只要a为真(非0),就不必判断b和c;只有a为假, 才判别b;a和b都为假才判别c。见图5.4。 图5.3 图5.4