在下列句子中,逗号的作用是什么?

what is the role of the comma in below statements?

本文关键字:作用 是什么 句子 在下列      更新时间:2023-10-16

当我在C/c++中遇到这个语法时,正在阅读PETSc:

PetscInt i, n = 10, col[3], its;
PetscScalar neg_one = -1.0, one = 1.0, value[3];

我不明白这里逗号的意思。这和元组有关吗?还是有什么东西超载了?

这只是声明了多个相同类型的变量。

就像

int a, b;

第一行声明了四个类型为PetscInt的变量,称为i, n(初始化为10),数组col[3],最后是its。第二行声明了三个PetscScalar类型的变量。

:

PetscInt i,n = 10,col[3],its;

等于:

PetscInt i;
PetscInt n = 10;
PetscInt col[3];
PetscInt its;

一些人发现原来的方法更短,更容易输入,而且也很好,因为它表明变量共享(部分)相同的类型。有些人觉得它令人困惑,或者容易出错,这当然是主观的,但我觉得我应该提一下,以激励你为什么经常发现这样的代码。

这里的逗号只是为了在单行语句中声明多个相同类型的变量。你可以把它们分成一行,比如

PetscInt i;
PetscInt n = 10;
PetscInt col[3];
PetscInt its;

虽然两者都是有效和正确的语法,但我们中的一些人更喜欢使用广义的版本,因为它提供了更好的可读性(IMHO),并且避免了指针类型或存储类说明符与类型相关联时可能出现的混淆。

例如,对于简写

int * p, q;

相同
int *p;
int q;   //not int *q

q不是一个指针类型。