【发布时间】:2018-06-17 07:14:32
【问题描述】:
使用 C++14,如果我想在同一条指令上声明和初始化两个整数(使用逗号分隔符):
int i,j = 0;
std::cout << i << "," << j << std::endl;
然后只有最右边的变量(j)被正确初始化。实际上,编译器会输出一条警告消息:
警告:“i”在此函数中未初始化 [-Wuninitialized]
当然解决方案是在每个变量上重复它
int i=0, j=0;
但问题是:
有没有办法用一个赋值运算符正确初始化多个变量?
【问题讨论】:
-
不,没有。
-
C++17 中有,如 Caleth 所示。在此之前,您至少可以通过使用
int i = j = 0等来避免重复 rhs,但我真的不想鼓励这样做... -
int i=0;中的等号不是赋值...它是带有初始化值的声明。您如何区分int i, j = 0;的情况,您不希望i初始化和两个变量初始化为相同值的情况?那么int i = 0, j;应该是什么意思呢? -
为了区分它们,您可以将它们写在两个不同的指令中。但实际上,我的问题更多:如果我想连续创建 26 个变量并且我懒得一一初始化它们(int a=0,b=0,...,z=0),我做有解决方法吗?
标签: c++ initialization declaration assignment-operator