Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中的if(Expr,Expr)结构?_C - Fatal编程技术网

C中的if(Expr,Expr)结构?

C中的if(Expr,Expr)结构?,c,C,任何人都知道C中if(Expr,Expr)结构的逻辑意义是什么? 比如: 当有“,”时,表达式将计算为列表中的最后一个表达式 所以:1,3==3 这也可以解释为: lcn = (ULONG)GetLCN(index); if (lcn) { .... } 我不知道他们为什么这样做。a,b首先计算a,然后计算b,整个表达式的值为b。例如,(false,true)的计算结果为true 例如,在执行赋值后,您给出的表达式的值为lcn。如果((var=func())(额外的括号抑制了编译器警告,以防止

任何人都知道C中if(Expr,Expr)结构的逻辑意义是什么? 比如:

当有“,”时,表达式将计算为列表中的最后一个表达式

所以:1,3==3

这也可以解释为:

lcn = (ULONG)GetLCN(index);
if (lcn) { .... }

我不知道他们为什么这样做。

a,b
首先计算
a
,然后计算
b
,整个表达式的值为
b
。例如,
(false,true)
的计算结果为true

例如,在执行赋值后,您给出的表达式的值为
lcn
。如果((var=func())(额外的括号抑制了编译器警告,以防止意外使用
=
而不是
=
),则编写

您看到了C的作用

基本上,除了最后一个表达式之外,所有表达式都被计算,但其结果都被丢弃;然后计算最后一个并返回到表达式的其余部分

因此,在您的情况下,
lcn
正在设置,然后进行检查(在
if
语句中)。

您看到的是正在运行的。当你有

if(expr1, expr2)...

expr1
被求值并丢弃,并且在if语句中使用
expr2
的值。

当赋值求值到赋值时,他们很可能将其保留为
if(lcn=(ULONG)GetLCN(index))
,有些人喜欢用一组额外的括号来表示,
=
in和
if
子句是故意的:
if((lcn=(ULONG)GetLCN(index))
。我感觉有人对GCC的括号警告感到恼火,只是在其中添加了逗号操作符:)嗨,欢迎来到StackOverflow!一些提示:(1)你应该使用至少两个换行符来分隔段落,(2)你应该通过突出显示代码并单击编辑区域顶部的“101010”按钮来格式化代码。(您也可以用四个空格缩进)希望您在这里过得愉快!
if(expr1, expr2)...