我想知道为什么下面的代码会崩溃。
int main( )
{
int arr = 1 && arr;
return 0;
}但不是使用下面的代码
int main( )
{
int arr = 0 && arr;
return 0;
}提前感谢
发布于 2010-04-11 00:07:43
0 && arr
由于0,上面的表达式是假的,因此不像1 && arr那样检查arr,在1 && arr中,必须检查arr才能计算expression的值。
您应该尝试:
int main(){
int a = 0 && printf("a"); //printf returns number of characters printed, 1
int b = 1 && printf("b");
return 0;
} 发布于 2010-04-11 00:08:42
由于布尔表达式的短路计算。在第一个示例中,运算符&&的左侧计算结果为true,因此右侧的计算结果为true。在第二种情况下,左边为false,因此不会计算右边的值。
https://stackoverflow.com/questions/2613980
复制相似问题