赋值运算符和条件语句

Kar*_*ish 0 c++ if-statement dynamic

我很难理解以下代码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;
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*mes 9

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