Backto C/C++ Index
Types
- char
- int
- long
- float
- double
- signed/unsigned
Tips
Tip 01: (unsigned int 0) - 1
void foo(unsigned int k) {
for(int i=0; i < k-1; ++i)
...
}
这段代码是一个简单的 k 次循环, 但是却隐藏着一个超级 bug, 就是 k=0 的情况下,k-1 = 0xFFFFFFFF = 4294967295,
本意是跳过循环, 却循环了这么多次, 极易造成程序崩溃.
Tip 02: 各数据类型的取值范围
- char/int8:
-128~127: 百数来个常用的字符 - int16:
-65536~65535: 上下 6 万 - int32:
-2147483648~2147483647, 上下 20亿
本文深入探讨C/C++中各种数据类型如char、int、long、float、double及signed/unsigned的取值范围,并揭示了在使用unsigned int进行循环时可能遇到的超级bug,避免程序因错误操作而崩溃。

735

被折叠的 条评论
为什么被折叠?



