C++数组下标'i'未定义错误及数组求和问题求助
C++佣金计算器问题修复方案
一、解决individualCommission[i]中i未定义的错误
出现该错误的核心原因是变量i在当前代码作用域未声明,或作用域未覆盖到第29行,常见场景及修复方式:
- 如果第29行在
for循环外部,但i是在循环内定义的(比如for(int i=0; ...)),循环结束后i的作用域失效,此时需把i的声明移到循环外,或在第29行所在代码块内重新声明并赋值i。
错误示例:
修复后:for(int i=0; i<numEmployees; ++i) { // 处理逻辑 } individualCommission[i] = 0; // 报错:i未定义int i; for(i=0; i<numEmployees; ++i) { // 处理逻辑 } individualCommission[i] = 0; // 此时i在当前作用域有效 - 如果第29行完全没有对应
i的声明,直接在代码块开头(比如函数内部)添加int i;,并在使用前给i赋值即可。
二、计算individualCommission数组的总和
提供三种常用实现方式,可根据代码版本和习惯选择:
- 手动遍历累加(兼容性最好,支持所有C++版本)
double totalCommission = 0.0; // 假设数组存储double类型,可根据实际类型调整 // 假设数组有效元素数量为numEmployees for(int i=0; i<numEmployees; ++i) { totalCommission += individualCommission[i]; } - 范围for循环(C++11及以上版本适用,代码更简洁)
double totalCommission = 0.0; for(auto commission : individualCommission) { totalCommission += commission; } - 使用标准库
std::accumulate(C++11及以上版本适用,需包含<numeric>头文件)#include <numeric> // ... double totalCommission = std::accumulate(individualCommission, individualCommission + numEmployees, 0.0);
内容的提问来源于stack exchange,提问作者The Fae Shoals
相关产品推荐
相关产品推荐

