我有以下代码。
void setCoin() {
int coin;
int tmpC = 0;
int tmpA = 0;
for(unsigned int i = 0; i < GRPS.size(); i++) {
coin = workerCoin();
GRPS[i].choice = coin;
//printf("\n| group: %d |%d|", GRPS[i].size, coin);
if(coin) {
tmpC += GRPS[i].size;
}
else {
tmpA += GRPS[i].size;
}
}
cheaters = tmpC;
altruistic = tmpA;
grp = GRPS[GRPS.size() / 2];
}
其中作弊者和利他主义者在文件中具有全局范围,而tempC 和 tmpA在 setCoin() 函数中具有局部范围。
即使代码进入for
循环,tmpC 和 tmpA 也会被加载到/视为寄存器吗?
我问这个是因为for
循环创建了一个局部变量 ,i
因此 tmpC & tmpA 在 for 循环的范围内可能不再是“本地”的。将此for
循环更改为while
循环是否可以解决此问题并将 tmpC 和 tmpA 加载到/视为寄存器?