错误是用户执行的非法操作,导致程序异常工作。
在编译或执行程序之前,通常不会发现编程错误。一些错误会阻止程序被编译或执行。因此,应在编译和执行之前消除错误。
可以将最常见的错误大致归纳如下。
错误类型
- 语法错误:违反C / C++语法编写规则时发生的错误称为语法错误。此编译器错误表明在编译代码之前必须先修复一些问题。所有这些错误都由编译器检测到,因此称为编译时错误。
最常见的语法错误是:- 缺少括号( } )
- 在不声明变量的情况下打印变量的值
- 缺少这样的分号:
// C program to illustrate // syntax error #include
void main() { int x = 10; int y = 15; printf("%d", (x, y)) // semicolon missed } 错误:
error: expected ';' before '}' token
- 基本构造的语法写错了。例如:while循环
// C program to illustrate // syntax error #include
int main(void) { // while() cannot contain "." as an argument. while(.) { printf("hello"); } return 0; } 错误:
error: expected expression before '.' token while(.)
在给定的示例中,while循环的语法不正确。这会导致语法错误。
- 运行时错误:成功编译后在程序执行(运行时)期间发生的错误称为运行时错误。最常见的运行时错误之一是被零除,也称为除法错误。这些类型的错误很难找到,因为编译器没有指向发生错误的行。
为了获得更多的理解,请运行下面给出的示例。// C program to illustrate // run-time error #include
void main() { int n = 9, div = 0; // wrong logic // number is divided by 0, // so this program abnormally terminates div = n/0; printf("resut = %d", div); } 错误:
warning: division by zero [-Wdiv-by-zero] div = n/0;
在给定的示例中,存在除以零的误差。这是运行时错误的示例,即运行程序时发生的错误。
- 链接器错误:编译后,我们使用Ctrl + F9键(RUN)将不同的对象文件与main对象链接在一起时,会发生这些错误。这些是无法生成程序的可执行文件时生成的错误。这可能是由于错误的函数原型,不正确的头文件引起的。最常见的链接器错误之一是编写Main()而不是main() 。
// C program to illustrate // linker error #include
void Main() // Here Main() should be main() { int a = 10; printf("%d", a); } 错误:
(.text+0x20): undefined reference to `main'
- 逻辑错误:在编译和执行程序时,如果给出某些输入值,则无法获得所需的输出。这些类型的错误提供了不正确的输出,但看起来没有错误,被称为逻辑错误。这些是编程初学者最常见的错误之一。
这些错误仅取决于程序员的逻辑思维,很容易检测我们是否遵循执行路线并确定程序为何采用该执行路径。// C program to illustrate // logical error int main() { int i = 0; // logical error : a semicolon after loop for(i = 0; i < 3; i++); { printf("loop "); continue; } getchar(); return 0; }
无输出
- 语义错误:当程序中编写的语句对编译器没有意义时,将发生此错误。
// C program to illustrate // semantic error void main() { int a, b, c; a + b = c; //semantic error }
错误
error: lvalue required as left operand of assignment a + b = c; //semantic error
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。