1. 主页
  2. 文档
  3. C语言教程
  4. C语言运算符
  5. C 和 C++ 中的逗号

C 和 C++ 中的逗号

在 C 和 C++ 中,逗号 (, ) 可以在两种情况下使用: 
1) 逗号作为运算符: 
逗号运算符(由记号, 表示)是一个二元运算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。逗号运算符在所有 C 运算符中具有最低优先级,并充当序列点。 

/* comma as an operator */
int i = (5, 10); /* 10 is assigned to i*/
int j = (f1(), f2()); /* f1() is called (evaluated) first followed by f2().
The returned value of f2() is assigned to j */

2) 逗号作为分隔符: 
当与函数调用和定义、函数类宏、变量声明、枚举声明和类似结构一起使用时,逗号充当分隔符。 


/* comma as a separator */
int a = 1, b = 2;
void fun(x, y);

不应将逗号用作分隔符与用作运算符混淆。例如,在下面的语句中,可以按任意顺序调用 f1() 和 f2()。 


/* Comma acts as a separator here and doesn't enforce any sequence.
Therefore, either f1() or f2() can be called first */
void fun(f1(), f2());

您可以尝试以下程序来检查您对 C 中逗号的理解。 

// PROGRAM 1
#include <stdio.h>
int main()
{
int x = 10;
int y = 15;

printf("%d", (x, y));
getchar();
return 0;
}
// PROGRAM 2: Thanks to Shekhu for suggesting this program
#include <stdio.h>
int main()
{
int x = 10;
int y = (x++, ++x);
printf("%d", y);
getchar();
return 0;
}
// PROGRAM 3: Thanks to Venki for suggesting this program
#include <stdio.h>
int main()
{
int x = 10, y;

// The following is equivalent
// to y = x + 2 and x += 3,
// with two printings
y = (x++,
printf("x = %d\n", x),
++x,
printf("x = %d\n", x),
x++);

// Note that last expression is evaluated
// but side effect is not updated to y
printf("y = %d\n", y);
printf("x = %d\n", x);

return 0;
}

代码中的以下表达式:

a = 2, 3, 4;

被评估为:

(((a = 2), 3), 4);

这是因为赋值运算符的优先级高于逗号运算符。

#include <iostream>

using namespace std;

int main()

{

int a = 5;

a = 2, 3, 4;

cout << a;

return 0;
}

3) 逗号运算符代替分号。 
我们知道,在 C 和 C++ 中,每条语句都以分号结束,但在满足以下规则后,逗号运算符也用于结束语句。 

  • 变量声明语句必须以分号结束。
  • 声明语句后的语句可以用逗号结束。
  • 程序的最后一条语句必须以分号结束。

例子:

#include <iostream>
using namespace std;
int main()
{
cout << "First Line\n",
cout << "Second Line\n",
cout << "Third Line\n",
cout << "Last line";
return 0;
}

输出: 

First Line
Second Line
Third Line
Last line

尽量不要混淆逗号作为分隔符和逗号作为运算符。示例:

int a = 4, 3;

这将产生一个错误,因为在这种情况下,逗号作为声明发生时的分隔符。所以错误更少的代码如下:

诠释一个;

a = 4,3;

现在存储在 a 中的值将是 4。

此外,以下是有效的,

int a =(4, 3);

这里,3 存储在 a 中。

 

 

这篇文章对您有用吗?