当我在C / C ++中使用这种语法时,正在阅读PETSc:
PetscInt i, n = 10, col[3], its;
PetscScalar neg_one = -1.0, one = 1.0, value[3];
我不明白这里逗号的含义。它与元组有关吗?或者有什么东西超负荷?
答案 0 :(得分:12)
那只是声明了相同类型的多个变量。
就像
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;
有些人发现原始方式更短,更容易输入,也很好,因为它表明变量共享(部分)相同的类型。有些人觉得这很容易让人感到困惑和/或容易出错,这当然是主观的,但我觉得我应该提一下这就是为什么你经常会找到这样的代码。
答案 1 :(得分:4)
这里的逗号只是在单行语句中声明多个相同类型的变量。您可以将它们分成一个单独的行,每个行,如
PetscInt i;
PetscInt n = 10;
PetscInt col[3];
PetscInt its;
虽然两者都是有效且正确的语法,但我们中的一些人仍然喜欢使用宽版本,因为它提供了更好的可读性(恕我直言),并避免在指针类型或存储时出现任何可能的混淆与类型关联的类说明符。
例如,简写
int * p, q;
与
相同int *p;
int q; //not int *q
q
不是那里的指针类型。