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

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

回复
阅读 23.7k
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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏