本帖最后由 jackz007 于 2020-12-25 00:00 编辑
逻辑表达式都是以追求表达式的值真为终极目标,根据短路逻辑,&& 两侧表达式的逻辑值必须同为真才能判断整个表达式的值为真。&& 操作是先执行左侧的表达式,并进行逻辑判断,只有在结果为真的情况下,才会继续执行右侧的表达式并进行逻辑判断,如果右边的逻辑值也同为真,才可以判定整个表达式的值为真;反之,如果左侧是逻辑假,就可以断定整个表达式的值一定是假,就不再需要继续执行右侧的表达式和判断了。现在,(a=0) 这个表达式的值为 0,其逻辑值为假,所以,右边的表达式就不会被执行了。
同样还是根据短路逻辑,|| 两侧的表达式只要有一侧的逻辑值为真,则整个表达式的值即为真,|| 操作也是先执行左侧的表达式,并进行逻辑判断,只有结果为假的情况下才需要继续执行 || 右侧的表达式并进行逻辑判断,如果右侧的值为真,也可以判断整个表达式的值为真;反之,如果左侧为逻辑真,就可以断定整个表达式的值一定为真,就再不需要继续执行右侧的表达式和判断了。现在,(a=1) 这个表达式的值是 1,其逻辑值为真,所以,右边的表达式自然不会执行。
所以,在上述的两个表达式中,a 均被赋值,b 均未被赋值。