【发布时间】:2020-05-14 16:24:08
【问题描述】:
为了清楚起见,让我们考虑以下程序:
#include <iostream>
int main(void) {
short int i; // declaration
short int value;
short int sum;
i = value = sum = 0; // initialization
std::cout << "Enter a value: ";
std::cin >> value;
while (i != value) { // ### here's the confusion ###
sum += i;
i++;
}
std::cout << "Total sum: " << sum << std::endl;
return 0;
}
看while (i != value),当给出这个表达式时,结果显示Total sum: 45,而如果我们输入while (i <= value),结果显示Total sum: 55。 (例如输入10)
这里的困惑是,我们什么时候应该在循环中使用!= 和<= 或 >= 操作,任何特定条件?
根据TutorialsPoint's Operators Reference
- 它告诉
!=(返回true,当两个操作数不相等时使用)。 -
<=(当我们需要确定第一个操作数是否小于或等于第二个时,返回true)。
预计输出不会有任何差异,但有些地方被误解了。
【问题讨论】:
-
在调试器中单步执行并找到执行与您期望的差异的确切比较。
-
您的要点清楚地表明它们不等效。当
i=5和num=5时会发生什么? -
顺便说一句,没有理由使用
short int。通常int类型是处理器寄存器的大小,处理器针对该数据大小进行了优化。例如,short可以是 16 位,这对于只获取 32 位的处理器来说会很烦人。如果您想要 16 位数量,请使用uint16_t或int16_t。
标签: c++ while-loop operators