C++多变量整数声明的工作原理及number(0)初始化疑问
C++变量声明行的疑问解答
先看你贴的代码:
int n, Petya, Vasya, Tonya, number(0); cin >> n; while (n--) { cin >> Petya >> Vasya >> Tonya; if (Petya + Vasya + Tonya >= 2) { number += 1; } }
1. int n, Petya, Vasya, Tonya, number(0);这一行的工作方式
这是C++里一次性声明多个同类型变量的简化写法,和分开写下面五行完全等价:
int n; int Petya; int Vasya; int Tonya; int number(0);
- 前四个变量
n、Petya、Vasya、Tonya是默认初始化:如果这段代码在函数内部(比如main函数),它们的初始值是随机的“垃圾值”,不过后面会通过cin赋值覆盖,所以不影响;要是全局变量的话会自动初始化为0,但这里显然是局部场景。 - 最后一个
number用(0)做了显式初始化,和前几个的初始化逻辑不一样。
2. 声明末尾的number(0)有什么作用
这是C++对内置类型变量的显式初始化写法(参考了类的构造函数初始化方式),核心就是把number的初始值设为0。
必须这么做的原因是:后面代码要用number += 1统计满足条件的次数,如果number不初始化,它一开始是随机垃圾值,累加出来的结果肯定错误。给它初始化为0,才能保证计数从0开始,每满足一次条件加1,最终得到正确的统计结果。
内容的提问来源于stack exchange,提问作者jsampn
相关产品推荐
相关产品推荐

