我想知道为什么以下代码崩溃。
int main( )
{
int arr = 1 && arr;
return 0;
}
但不是以下代码
int main( )
{
int arr = 0 && arr;
return 0;
}
提前致谢
答案 0 :(得分:12)
0 && arr
由于0
,上述表达式为 false ,因此arr
与1 && arr
不同,arr
必须检查int main(){
int a = 0 && printf("a"); //printf returns number of characters printed, 1
int b = 1 && printf("b");
return 0;
}
以评估值表达
你应该尝试:
{{1}}
答案 1 :(得分:4)
由于布尔表达式的短路评估。在第一个例子中,&&的左侧。运算符求值为true,以便评估权限。在第二种情况下,左边是假的,所以永远不会评估右边。