这个运算符在 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
我有以下代码片段:
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