-- 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,基本规则就是从左到右执行申明和初始化。
2
和3
,比较罕见的语法,其实就是将多行代码写成一行,用逗号隔开,而不是分号。
3
处,在return语句中出现逗号,还是从左到右执行,最后的表达式的值作为返回值。
以上测试代码的执行效果符合预期,编译没有warning:
$ clang -Wall -Wextra test3.c -o test3
$ ./test3
106
112
本文链接:https://cs.pynote.net/sf/c/202208161/
-- EOF --
-- MORE --