我有:
#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)取决于具体情况
答案 0 :(得分:8)
您的问题在于运营商优先级。在&&
之后评估<<
运算符。因此,您的打印表达式变为:(cout<<(i==0)) && (i==1);
。更正优先级,它按预期打印0:cout<<((i==0) && (i==1));