在 C 中,当将有符号整数与无符号整数进行比较时,有符号整数将提升为无符号整数。这意味着负号被忽略,整数被视为一个大的正值。
考虑以下 C 程序:
#include <iostream> #include <vector> int main() { std::vector<int> a; std::cout << "Vector size: " << a.size() << std::endl; int b = -1; if (b < a.size()) std::cout << "Less"; else std::cout << "Greater"; }
在这个程序中,向量 a 的大小是一个无符号整数。但是,当将其与有符号整数 b 进行比较时,b 会被提升为无符号整数。这意味着负号被忽略,b 被视为一个大的正值。因此,比较b<0。 a.size() 将始终为 false,并且程序将打印“Greater”。
要更清楚地看到此行为,请考虑以下代码示例:
#include <iostream> int main() { unsigned int a = 0; int b = -1; std::cout << std::boolalpha; std::cout << (b < a) << "\n"; }
此程序将输出 false,即使 b 明显小于 a。这是因为 b 被提升为无符号整数,并且负号被忽略。
以上是C 如何处理有符号整数和无符号整数之间的比较?的详细内容。更多信息请关注PHP中文网其他相关文章!