我正在查看别人做的一些代码,我看到了这个:
if (numDetects == 0) {
Table[Index].minF =
Table[Index].maxF = F;
}
Run Code Online (Sandbox Code Playgroud)
表[Index] .minF = blank对我没有任何意义.我生命中从未见过这一点.但是代码确实可以编译运行,所以有人可以向我解释一下是否有可能只留下一个等号?谢谢!
是; C不关心第一行和第二行之间的空白区域,因此它将其视为
Table[Index].minF = Table[Index].maxF = F;
Run Code Online (Sandbox Code Playgroud)
它在语法上等同于
Table[Index].minF = (Table[Index].maxF = F);
Run Code Online (Sandbox Code Playgroud)
由于赋值运算符=不仅将左侧指定给右侧,而且还返回已指定的值.在这种情况下,该返回值然后又被分配给外侧左侧.
是的,这与以下相同:
Table[Index].minF = Table[Index].maxF = F;
Run Code Online (Sandbox Code Playgroud)
赋值运算符(=)可以像任何其他运算符一样链接.它从右到左进行评估,每个评估返回分配的值.所以这相当于以下两个陈述.
Table[Index].maxF = F;
Table[Index].minF = Table[Index].maxF;
Run Code Online (Sandbox Code Playgroud)