C语言中的“小括号运算符”是个什么东西?

学了大概一年多的C了,怎么之前没听过呢?

阅读 25k
3 个回答
printf("%d",((2,3),4));

这一行不是“小括号运算符”,是逗号运算符,括号只是限制优先级的

(2,3)的值是3
((2,3),4)的值是4  

所以输出是4

逗号表达式在下面这个宏里面很有用。我甚至不知道要是不用它,有没有什么好的替代。

#define LOGF (fprintf(stderr, "[%s %s:%d]: ", __func__, __FILE__, __LINE__), printf)

比如:

#include <stdio.h>
#define LOGF (fprintf(stderr, "[%s %s:%d]: ", __func__, __FILE__, __LINE__), printf)
int foo(int x) {
  LOGF("x = %d\n", x);
}
int main() {
  LOGF("Hello, %s!\n", "world");
  foo(42);
}

运行:

$ ./a.out 
[main a.c:9]: Hello, world!
[foo a.c:5]: x = 42

补充一楼答案。逗号运算符取最后一个值.

  int a = (1, 2, 3); // 3
推荐问题
宣传栏