计算表达式
Compute expression
我有:
#include <iostream>
int main()
{
static int i, arr[10];
cout<<(i==0) && (arr[i]<0);
}
这意味着i
和t
的所有元素都被0
自动初始化。为什么这个表达式(i==0) && (t[i]<0)
返回true?即使这样也返回true:
#include <iostream>
int main()
{
static int i;
cout<<(i==0) && (i==1);
}
当我看到这个应该有正确答案的问题a时,我很困惑:
- 给定声明:
static int i, t[10];
,假设I和t都没有显式初始化,则表达式的值(i==0) && (t[i]<0)
(a)为1
(b)为0
(c)取决于上下文
您的问题是操作符优先级。&&
运算符在<<
之后求值。因此,打印表达式变成:(cout<<(i==0)) && (i==1);
。纠正优先级,它会像预期的那样打印0:cout<<((i==0) && (i==1));
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 编译器是否强制根据模板参数计算表达式?
- 为什么'typeid(x) == typeid(y)'的计算结果为 true,其中 'x' 和 'y' 分别是 T 和 T& 类型的 id-表达式?
- 如何在常量计算表达式中获取编译时错误?
- 计算阶乘的 C++17 倍表达式中的错误
- 计算表达式字符串由 std::map 中的键组成
- 复合赋值的左侧表达式是未初始化的值.计算出的值也将是垃圾
- 使用正则表达式C++计算数字中的十进制空格
- 是否可以定义以后可以计算的布尔表达式
- 如何使用 ASCII 转换使用字符堆栈计算后缀表达式
- std::d eclval 和未计算的表达式
- (类型)(数学表达式)是否计算此类型的表达式?
- 使用不同的表达式计算同一整数时的结果不一致
- 手动将二进制表达式计算为十六进制
- 使用链表在C++进行表达式计算
- 表示表达式计算c++(多态性设计)
- 此表达式计算什么
- 将空表达式计算为NOP