第五章 逻辑错误

逻辑错误是指能通过编译,并且运行时也不会抛出异常的一种错误。
包含逻辑错误的程序是正确的程序,但是他们的表现往往和你希望的不太一样。

这一节所列出的是新手最最最常见的错误,希望大家铭记在心,切记避免这些错误。

1. 变量未初始化

建议:无论何时C语言声明变量时一定要初始化。

C语言

基本类型:指C语言内置的不包括Struct和Union的类型,如int,char,char*等

未初始化的基本类型局部变量的值是不确定的。

未初始化的基本类型全局变量的值在二进制层面的全为0

结构体/联合也符合上述规则(全局结构体的成员值置0,局部结构体的成员值不确定)

malloc出的空间值不确定,calloc出的空间值置0。

可利用memset完成空间置0操作。

C++语言

占位符

2. 混淆=与==

在 C/C++ 中, 赋值运算符 = 也具有返回值

返回值为赋值符右边的表达式的值

在有需要的时候 C/C++ 可以将这个值强制转换为逻辑值

if(a = 0){ // a = 0 返回值为 0, 强制转换为逻辑值 false
    printf("Interesting"); // 不可能被执行
}

对于涉及常数的判定,可以将常数放在左边,让编译器检查。

if(0 = a); // 编译错误
if(0 == a); // OK

3. 对空指针解引用

占位符

3. 代码块结构混乱

占位符

results matching ""

    No results matching ""