这个运算符在 C 中是什么意思?

What does this operator mean in C?

我有以下代码片段:

for(int i=0;i<6; i++)  rtk->rb[i]=i<3?opt->rb[i]:0.0;

我无法理解这一行的含义...rtk 是一个结构体,它有一个名为 rb 的字段(它是一个数组),而 opt 是另一个结构体,它也有一个相同的字段 rb.. . 符号 < 和 ?让我感到困惑... rtk 类型是 rtk_t,而 opt 类型是 prcopt_t:

typedef struct {        
    
    double rb[6];       /* base position/velocity (ecef) (m|m/s) */
    ....
} rtk_t;

typedef struct {        

    double rb[3];       /* base position for relative mode {x,y,z} (ecef) (m) */
    
} prcopt_t;

这里是右边的部分:

rtk->rb[i]=i<3?opt->rb[i]:0.0;

i<3?opt->rb[i]:0.0

是另一种说法:

 if (i < 3)
 {
     x = opt->rb[i];
 }
 else
 {
     x = 0.0;
 }

只是你写的方式是用ternary operators