我是一名学生,我明天要参加考试,需要有人来解释一下这个" a || b"和" a&& b"如果函数实际意味着内部。
以下是我的意思的一个例子:
a = 0,b = 1,c = 0
A)
if(a||b)
c=++b;
c++;
解决方案:c = 3
b)中
if(a&&b)
c=++b;
c++;
解决方案:c = 1
我不明白|| b和&& b是什么意思。我把它看作是一个OR b和一个AND b,但这究竟意味着什么?
答案 0 :(得分:6)
这些是您遇到这两个问题的起始值:a=0 , b=1 , c=0
这两个问题中的问题是:“变量c的值是什么
让我们看看第一个问题:
if(a||b) // if a or b is true (meaning in this case not 0)
c=++b; // then increment the value of b (was 1, now 2) and assign the value to c
c++; // increment c's value again (was 2, now 3)
因此,解决方案是3。
第二个问题
if(a&&b) // if a is true (shortcutting here, because a is 0, which is false)
c=++b; // we don't get to this part
c++; // increment c (which was 0, now 1)
解决方案是1
答案 1 :(得分:1)
如果第一个上的OR b不为零,则第二个上的AND b不为零。
答案 2 :(得分:1)
是的,这正是它的含义。 ' a OR b'和'和b'
由于a为0且b为1,因此它们的OR结果为1(在第一个if条件中),因此执行语句“c = ++ b'”。 他们的AND结果为零,因此您不会执行语句' c = ++ b'
答案 3 :(得分:1)
1)
if(a||b)
c=++b;
c++;
因为0 || 1将评估为真,因为其中一个在OR比较中为真。因此,将有一个b的预增量,其值将分配给c。因此,c将为2,然后c再次递增,因此它将变为3
2)
if(a&&b)
c=++b;
c++;
比较将是假的,因为a是0,在比较中是假的。所以只有c ++;将评估该行,并将其后增量设为1
答案 4 :(得分:1)
你实际上是正确的,|| b只是意味着"或者b"并且&& b表示" a AND b"。但这两个问题的真正意义仅在于测试你的知识:
第一个问题是if的计算结果为true,因为a为假(= 0)且b为真(= 1 - 实际上任何非零值为真),使得|| b = true 。这就是为什么c = 3,因为语句c = ++ b被执行了。此外,++ b实际上返回2,因为前缀++意味着首先递增,然后将其新值返回到表达式的其余部分(在这种情况下赋值给c)。然而,postfix ++意味着首先在递增之前将操作数的值返回给表达式。
另一方面,第二个问题显示的是if的计算结果为false,因为a为假(= 0)且b为真(= 1 - 实际上任何非零值为真),这样a& ;& b = false。这就是为什么c = 1,因为语句c = ++ b没有执行,后面的c ++会将c从0初始值增加到1。