(1) a=b>c && b==c
b>c 为 false => a=b>c为 false => (1)式为false
(2) a || b+c&&b-c
a = 3 != 0 => (2)式为true
(3)(!(a+b)+c-1)&&(b+c)/2
!(a+b) == 0 => (!(a+b)+c-1) == 4 为 true
又(b+c)/2 != 0 所以 (3)式为true
结果为 0 1 1
C语言中采用的是短路计算方式,一旦确定了表达式的值就不会再去计算未确定的因子 例如 a && b 如果 a为false 则整个表达式为 false, b的值不会计算; 如果 a 为true 则再计算b的值来确定整个表达式的值。
你可以编程测试
#include
#include
void main()
{
int a, b, c;
a = 3;
b = 4;
c = 5;
int x, y, z;
x = ( a=b>c&&b==c );
y = ( a||b+c&&b-c );
z = ((!(a+b)+c-1)&&(b+c)/2);
printf( "x=%d, y=%d, z=%d \n", x, y, z);
}
按!(非)>算术运算符>关系运算符>&&和||>赋值运算符的方法来求这个式子,算出来是个逻辑值
第一题,先看&&两面的B==C为假,所以答案为假,有一方为假时结果为假。
第二题,为真,例:a&&b的值为1。因为a和b均为非0,被认为真
第三题,为真
运算顺序!>&&>||
not>and>or
这因该是C程序设计的基础
不懂你要求什么