以下语句中逗号的作用是什么?
what is the role of the comma in below statements?
当我在 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;
有些人发现原来的方式更短,更容易输入,而且很好,因为它表明变量共享(部分)相同的类型。有些人觉得它令人困惑 and/or 容易出错,这当然是主观的,但我觉得我应该提到它来激励你为什么经常找到这样的代码。
这里的逗号只是为了在单行语句中声明多个相同类型的变量。你很可能将它们分成一行,每一行,比如
PetscInt i;
PetscInt n = 10;
PetscInt col[3];
PetscInt its;
虽然两者都是有效且正确的语法,但我们中的一些人还是更喜欢使用广泛的版本,因为它提供了更好的可读性(恕我直言)并避免了任何可能的混淆与该类型关联的指针类型或存储-class 说明符。
例如,对于 shorthand
int * p, q;
与
相同
int *p;
int q; //not int *q
q
不是那里的指针类型。
当我在 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;
有些人发现原来的方式更短,更容易输入,而且很好,因为它表明变量共享(部分)相同的类型。有些人觉得它令人困惑 and/or 容易出错,这当然是主观的,但我觉得我应该提到它来激励你为什么经常找到这样的代码。
这里的逗号只是为了在单行语句中声明多个相同类型的变量。你很可能将它们分成一行,每一行,比如
PetscInt i;
PetscInt n = 10;
PetscInt col[3];
PetscInt its;
虽然两者都是有效且正确的语法,但我们中的一些人还是更喜欢使用广泛的版本,因为它提供了更好的可读性(恕我直言)并避免了任何可能的混淆与该类型关联的指针类型或存储-class 说明符。
例如,对于 shorthand
int * p, q;
与
相同int *p;
int q; //not int *q
q
不是那里的指针类型。