我是 C++ 的新手,正在尝试学习数组的概念。我在网上看到了这段代码片段。对于下面的示例代码,声明是否有任何区别:
unsigned scores[11] = {};
unsigned grade;
作为:
int scores[11] = {};
int grade;
我想肯定有一个原因为什么 score[11] = {};
和 grade
被声明为 unsigned
,但是什么是背后的原因是什么?
int main() {
unsigned scores[11] = {};
unsigned grade;
while (cin >> grade) {
if (0 <= grade <= 100) {
++scores[grade / 10];
}
}
for (int i = 0; i < 11; i++) {
cout << scores[i] << endl;
}
}
最佳答案
unsigned
意味着 variable
不会保持负值(或者更准确 - 它不会关心符号 - )。 scores
似乎很明显和 grades
是无符号值(没有人得分 -25
)。所以,很自然地使用unsigned
.
但请注意:if (0 <= grade <= 100)
是多余的。 if (grade <= 100)
就足够了,因为不允许使用负值。
正如 Blastfurnace 评论的那样,if (0 <= grade <= 100)
甚至是不对的。如果你想要这样,你应该把它写成:
if (0 <= grade && grade <= 100)
关于c++ - 为什么将 "score[11] = {};"和 "grade"声明为 "unsigned"而不是 "int',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35595276/