C语言关于||和&&的问题。

2024-12-02 08:49:42
推荐回答(3个)
回答1:

&& 和 || 有短路效应
就是
(++b&&++c). 当++b==0时 ++c就不用判断了所以 &&运算短路 ++c没有执行

当++a||(++b&&++c). 当++a 非0 ||运算短路 (++b&&++c).无需运算被跳过
所以结论 只有++a被执行
其余运算被跳过

回答2:

||的优先级和&&的优先级是一样的,就像数学上的“+”和“-”一样 。我试过了,运行结果为:a=2,b=1,c=1,d=0,e=6 Press any key to continue.原因如下:首先说++a||++b&&++c;——逻辑或是一真即真,++a可执行,即为真,后面的就不用执行了(也就是|++b&&++c不执行),所以b=1,c=1;同理,语句(d=w>x)&&(e=y>z);中,逻辑与(&&)的运算法则是一假即假,(d=w>x)的结果是0,为假,所以&&后面的也不用算了,d=0,e=6(没变)。

回答3:

应该没有优先吧,一直没有注意!!看看书!!!