我很难理解以下代码buffer[i] = arr ? arr[i] : 0;
。
这是否意味着如果arr
包含任何内容,则其等于buffer[i]
,如果不包含0
则等于#include <iostream>
using namespace std;
int main ()
{
int arr[5]={11,22,33,44,55};
int * buffer;
buffer = new int [5];
for(int i=0;i<5;i++){
buffer[i] = arr ? arr[i] : 0;//true/falls
cout<<buffer[i]<<",";
}
cout<<endl;
int arr2[5]={};
int * buffer2;
buffer2 = new int [5];
for(int i=0;i<5;i++){
buffer2[i] = arr2 ? arr2[i] : 0;//true/falls
cout<<buffer2[i]<<",";
}
cout<<endl;
}
?
{{1}}
答案 0 :(得分:9)
似乎代码可能是在动态分配arr
时移植的。现在它在堆栈上,因此arr
永远不会是NULL
因此检查无用