逗号操作符(comma operator)

-- TOC --

这是一个常用的操作符,但是很可能我们在用的时候,没有意识到它是个operator。这也是一个罕见的操作符,因为它的出现可能会导致confusing code。

下面这段测试代码,有三处使用了comma operator,comma就是逗号,注意逗号出没的地方:

$ cat test3.c
#include <stdio.h>


int rs(int x) {
    x++, x+=2;  // 2
    // x++; x+=2;
    return x++, x+=2, x;  // 3
}


int main(void) {
    int a=100, b=rs(a), c=rs(b);  // 1
    printf("%d\n", b);
    printf("%d\n", c);
    return 0;
}

1处,就是常见的变量申明,不知道你有没有意识到,这其实就是comma operator,基本规则就是从左到右执行申明和初始化。

23,比较罕见的语法,其实就是将多行代码写成一行,用逗号隔开,而不是分号。

3处,在return语句中出现逗号,还是从左到右执行,最后的表达式的值作为返回值。

以上测试代码的执行效果符合预期,编译没有warning:

$ clang -Wall -Wextra test3.c -o test3
$ ./test3
106
112

本文链接:https://cs.pynote.net/sf/c/202208161/

-- EOF --

-- MORE --