繁体   English   中英

C语言中if(a,b,c,d)的含义是什么

[英]What's the meaning of if(a,b,c,d) in C Language

可能重复:
C ++逗号运算符

我一直在看用C语言编写if语句。 像这样。

if (a, b, c, d) {

    blablabla..
    blablabla..

}

if语句的含义是什么?

您所拥有的是一个逗号运算符的示例。 它计算所有四个表达式,但对if语句使用d

除非d以外的表达式有副作用(例如a++ ),否则它们是无用的。 您可以在小程序中看到它:

#include <stdio.h>
int main (void) {
    if (1,0) printf ("1,0\n");
    if (0,1) printf ("0,1\n");
    return 0;
}

输出:

0,1

大多数人甚至没有意识到就使用它,例如:

for (i = 0, j = 100; i < 10; i++, j--) ...

i = 0j = 100i++j++是两个完整表达式的组成部分,每个表达式都使用逗号运算符。

该标准的相关部分是C11 6.5.17 Comma operator

句法:

expression:
assignment-expression
expression , assignment-expression

语义:

逗号运算符的左操作数被评估为void表达式; 在它的评估与正确操作数的评估之间存在一个顺序点。 然后评估正确的操作数; 结果具有其类型和价值。

例:

如语法所示,逗号运算符(如本节中所述)不能出现在使用逗号分隔列表中的项(例如函数的参数或初始化程序列表)的上下文中。 另一方面,在这种情况下,可以在带括号的表达式中或条件运算符的第二个表达式中使用它。 在函数调用中:

f(a, (t=3, t+2), c)

该函数具有三个参数,第二个参数的值为5。

逗号运算符:依次计算a和b以及c和d并返回d的结果。

它计算一个,则b,则c,则d,并且使用的值d作为条件if 对其他三个进行评估,但通常仅针对副作用-丢弃结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM