考虑以下 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