C++ 规范:为什么应该使用有符号数?
这条 C++ 规范的意思是,在变量声明时,应该尽量使用有符号数,而不是无符号数。同时,不应该使用无符号数来判断正数,因为这样会导致后续的类型转换问题。
示例 1:
unsigned int num = 10;
if (num >= 0) {
// do something
}
在这个示例中,虽然 num 的值为正数 10,但是使用无符号数来判断正数是不正确的。因为无符号数的范围是 0 到 4294967295,所以 num >= 0 这个条件永远为真。这样就会导致后续的类型转换问题。
修改方法:
int num = 10;
if (num >= 0) {
// do something
}
在这个修改后的示例中,将 num 的类型从 unsigned int 改为 int,避免了使用无符号数来判断正数的问题。
示例 2:
unsigned int a = 10;
int b = -5;
if (a > b) {
// do something
}
在这个示例中,虽然 a 和 b 的值都是正数,但是使用无符号数来比较大小仍然会导致问题。因为 b 的值为负数,所以在使用无符号数 a 来和 b 比较大小时,b 会被转换成一个非常大的正数,使得 a > b 这个条件永远为真。这样就会导致后续的类型转换问题。
修改方法:
int a = 10;
int b = -5;
if (a > b) {
// do something
}
在这个修改后的示例中,将 a 和 b 的类型都改为 int,避免了使用无符号数来比较大小的问题。
原文地址: https://www.cveoy.top/t/topic/ohPy 著作权归作者所有。请勿转载和采集!