当int arr = 1&&时,代码崩溃ARR;但不是int arr = 0&& ARR;

时间:2010-04-10 16:04:05

标签: c

我想知道为什么以下代码崩溃。

int main( ) 
{  
    int arr = 1 && arr;
    return 0; 
}

但不是以下代码

int main( ) 
{  
    int arr = 0 && arr;
    return 0; 
}

提前致谢

2 个答案:

答案 0 :(得分:12)

0 && arr
由于0,上述表达式为 false ,因此arr1 && 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,以便评估权限。在第二种情况下,左边是假的,所以永远不会评估右边。