0

我很难理解下面的代码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;
}
4

1 回答 1

9

似乎代码可能是从arr动态分配时移植的。现在它在堆栈上,所以arr永远不可能NULL,所以检查没用

于 2012-11-12T22:52:23.073 回答