gpt4 book ai didi

c++ - val1,val2,val3,val4的值如何计算?

转载 作者:行者123 更新时间:2023-12-01 15:13:22 25 4
gpt4 key购买 nike

int main(){
int a = 1, b = 0, c = 1, val1, val2, val3, val4;
val1 = a || b || c;
val2 = a && b && c;
val3 = a || b && c;
val4 = a && b || c;

cout<< val1 << val2 << val3 << val4;
return 0;
}

val1到val4的值如何计算?

最佳答案

val1  =  a || b || c  =  (1 or 0) or 1    =  1 or 1   =  1
val2 = a && b && c = (1 and 0) and 1 = 0 and 1 = 0
val3 = a || b && c = 1 or (0 and 1) = 1 or 0 = 1
val4 = a && b || c = (1 and 0) or 1 = 0 or 1 = 1

当任意一方为1或双方均为1时, or操作 ||为1。

仅当双方均为1时, and操作 &&才为1。

假设没有括号, and操作始终优先(在 or操作之前计算)。

如果所有运算符的优先级相同,则从左到右进行计算。

C++使用 Short-circuit evaluation表示 &&||的含义,不需要评估所有步骤(就像您在一系列乘法中乘以0一样,您知道结果为0,而无需执行所有计算)。

这对于 val2意味着意味着,因为 a && b的值为0,所以不必费心评估 c。由于仅遵循 &&操作,因此右侧的值必须为0。

使用 val3运算符的 ||也是如此。由于 a的值为1,因此不必费心评估 b && c。因为如果任一项为1(在这种情况下为 a),则右侧的值必须为1。

涉及短路评估,所执行的计算将如下所示:
val1  =  a || b || c  =  1 or ...         =  1
val2 = a && b && c = 1 and 0 and ... = 0
val3 = a || b && c = 1 or ... = 1
val4 = a && b || c = 1 and 0 or 1 = 0 or 1 = 1

要查看实际的短路评估,您可以编写一个在评估变量时打印的程序,如下所示:
#include <iostream>
using namespace std;

int print(int x) {
cout << x;
return x;
}

int main(){
int a = 1, b = 0, c = 1, val1, val2, val3, val4;

val1 = print(a) || print(b) || print(c);
cout << endl;

val2 = print(a) && print(b) && print(c);
cout << endl;

val3 = print(a) || print(b) && print(c);
cout << endl;

val4 = print(a) && print(b) || print(c);
cout << endl;

return 0;
}

该程序的输出为:
1
10
1
101

关于c++ - val1,val2,val3,val4的值如何计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60695657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com