1. 主页
  2. 文档
  3. C语言教程
  4. C语言运算符
  5. 逗号运算符问题

逗号运算符问题

考虑以下 C 程序。

// PROGRAM 1
#include<stdio.h>

int main(void)
{
int a = 1, 2, 3;
printf("%d", a);
return 0;
}

上面的程序编译失败,但下面的程序编译正常并打印 1。

// PROGRAM 2
#include<stdio.h>

int main(void)
{
int a;
a = 1, 2, 3;
printf("%d", a);
return 0;
}

下面的程序打印出 3,为什么?

// PROGRAM 3
#include<stdio.h>

int main(void)
{
int a;
a = (1, 2, 3);
printf("%d", a);
return 0;
}

在 C/C++ 程序中,逗号用于两种情况:(1) 分隔符 (2) 运算符。

逗号在 PROGRAM 1 中用作分隔符,我们在该程序中得到编译错误。

逗号在 PROGRAM 2 中用作运算符。逗号运算符的优先级在运算符优先级表中最少。因此赋值运算符优先于逗号,并且表达式“a = 1, 2, 3” 等同于“(a = 1), 2, 3”。这就是为什么我们在第二个程序中得到输出为 1 的原因。

在 PROGRAM 3 中,使用了括号,因此首先执行逗号运算符,我们得到的输出为 3

 

 

这篇文章对您有用吗?