计算表达式

Compute expression

本文关键字:表达式 计算      更新时间:2023-10-16

我有:

#include <iostream>
int main()
{
    static int i, arr[10];
    cout<<(i==0) && (arr[i]<0);
} 

这意味着it的所有元素都被0自动初始化。为什么这个表达式(i==0) && (t[i]<0)返回true?即使这样也返回true:

#include <iostream>
int main()
{
    static int i;
    cout<<(i==0) && (i==1);
}

当我看到这个应该有正确答案的问题a时,我很困惑:

  1. 给定声明:

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));