计算表达式

时间:2014-06-17 12:04:22

标签: c++ expression

我有:

#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. 鉴于声明:
  2. static int i,t [10];

    并假设i和t都没有显式初始化,表达式的值 (i==0) && (t[i]<0)

    (a)是1

    (b)为0

    (c)取决于具体情况

1 个答案:

答案 0 :(得分:8)

您的问题在于运营商优先级。在&&之后评估<<运算符。因此,您的打印表达式变为:(cout<<(i==0)) && (i==1);。更正优先级,它按预期打印0:cout<<((i==0) && (i==1));