程序首先执行a==b,因为a==b为真,所以值为1(如果为假,则值为0),然后把1赋给m,因此m的值变为1。也就是说完成(m=a==b)的整个执行过程结果为真。
"||"是逻辑或运算符,因为完成“(m=a==b)为真”这步后已经符合||的要求,所以后面的(n=c==d)根本不用执行。(即:执行完“(m=a==b)为真”后,原式可变为1||(n=c==d),因为1为真,所以后面的(n=c==d)无论是真是假都无所谓,因此系统不会执行下去。也就是说n的值不变。)
1、首先(m=a==b)与||与(n=c==d)运算符进行比较,括号优先级最高。同 等优先级遵从从左到右的原则,所以先算(m=a==b)
2、=为赋值运算符,==为关系运算符,关系运算符高于赋值运算符,所 以先a==b,a==b为真,返回值为1,赋给m,所以m=1
3、由于是||运算符,结果已经为真了,所以后面的(n=c==d)并没有执行,所以n=0
&&运算符的特点是,当左值和右值中有一个为假,则整个&&表达式的值为假,
而且&&是左结合的,也就是从左向右运算,
所以一旦左边的表达式为假,则整个&&表达式的值为假,不会再处理右表达式,
这个也叫做&&短路。
m、n、b、a、c、d的值均为一,所以a>b为假,m=a>b=0,所以不会再处理右表达式n=c>b,
所以n的值不变
因为是或 ,||前a==b是真,将1赋给m,if已经为真,所以||后语句并没有执行,n还是原来的0