当用类似C的语言进行编程时,应该将“默认”整数类型设为int或uint/unsigned int?默认情况下,我的意思是当你不需要负数时,但是任何一个数据都应该足够容纳你所持有的数据。我可以想到两个很好的论点:默认int类型:有符号或无符号?
signed:在数学上更好的表现,如果你在没有想到的边界情况下尝试低于零,那么奇怪行为的可能性就会降低,通常会避免奇怪的边角情况。
unsigned:提供一点额外的保证来防止溢出,以防万一你对这些值的假设是错误的。作为文档,变量所代表的值应该为从不为为负数。
实际上,我认为C的类型提升方案会导致* signed * ints的行为与预期不同。无符号整数表现得很好,如果您知道模算术,而signed int具有依赖于实现的行为和遍布整个地方的有趣转换。但是如果你只打算使用一个,为了避免混淆它,它必须被签名。所以我同意这样一个结论,即不应该使用unsigned int,但实际上我认为不应该使用下行循环... – 2009-10-12 15:50:36
GCC无法警告它已经很长时间了无符号> = 0'总是如此。谷歌指南最好是误导性的,在最坏的情况下是危险的,因为循环迭代器的一个非常常见和非常正确的类型将是无符号类型'size_t'。当使用零原点计数器向后计数时,正确的无符号下溢测试是'i!=〜0U'。 – 2016-03-04 22:27:12