在下列句子中,逗号的作用是什么?
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;
一些人发现原来的方法更短,更容易输入,而且也很好,因为它表明变量共享(部分)相同的类型。有些人觉得它令人困惑,或者容易出错,这当然是主观的,但我觉得我应该提一下,以激励你为什么经常发现这样的代码。
这里的逗号只是为了在单行语句中声明多个相同类型的变量。你可以把它们分成一行,比如
PetscInt i;
PetscInt n = 10;
PetscInt col[3];
PetscInt its;
虽然两者都是有效和正确的语法,但我们中的一些人更喜欢使用广义的版本,因为它提供了更好的可读性(IMHO),并且避免了指针类型或存储类说明符与类型相关联时可能出现的混淆。
例如,对于简写
int * p, q;
与
相同int *p;
int q; //not int *q
q
是不是一个指针类型。
相关文章:
- "using namespace std;"在C++的作用是什么?
- 此代码中的" "是什么,它的基本作用是什么?
- 在模板参数中使用 {} 在 type_trait{} 中时,其作用是什么<T>?
- <<、>>算子在循环中的作用是什么
- 在c++中,减号和加号对字符串的作用是什么
- 窄集(_cast)的作用是什么
- 在这种情况下,#define 的作用是什么?
- 遍历模板参数包,没有争论的专业化的作用是什么?
- 在 c++ 中,没有 **std::fixed** 的 **std::setprecision()** 的作用是什么?
- 访问多个阵列时 CPU 缓存的作用是什么?
- 以下表达式的作用是什么:x = (a1,a2,..,n);
- 私人成员的作用是什么?
- 这段代码的作用是什么?
- *.exp文件的作用是什么
- ifstream::open()真正的作用是什么
- 如何在矩阵中使用指针.这行代码的作用是什么:int r=**(++b);
- 这个函数的作用是什么?与夹紧值有关
- 这个运算符()语法的作用是什么
- std::函数的模板参数中“const”修饰符和引用的作用是什么
- 字符串流在C++编程中的作用是什么