我有:
#include <iostream>
int main()
{
static int i, arr[10];
cout<<(i==0) && (arr[i]<0);
}
Run Code Online (Sandbox Code Playgroud)
这意味着两个i和所有元素都会t自动初始化0.为什么这个表达式(i==0) && (t[i]<0)返回true?即使这样也会返回:
#include <iostream>
int main()
{
static int i;
cout<<(i==0) && (i==1);
}
Run Code Online (Sandbox Code Playgroud)
当我重新提出这个问题时,我感到很困惑,这个问题应该是正确答案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));