C/C++ 中的错误


在 C 或 C++ 中,我们会遇到各种各样的错误。这些错误可以分为五种不同的类型,如下所示:

  • 语法错误
  • 运行时错误
  • 链接错误
  • 逻辑错误
  • 语义错误

让我们一一来看这些错误:

语法错误

这种错误发生在违反 C++ 编写技巧或语法的规则时。编译器通常会在编译前指出这类错误。有时这些错误被称为编译时错误。

在这个例子中,我们将看到如果在一行代码后面不加分号会如何产生语法错误。

示例

#include<stdio.h>
main() {
   printf("Hello World")
}

输出

Error] expected ';' before '}' token

运行时错误

这种错误发生在程序执行期间。由于这不是编译错误,因此编译将成功完成。如果尝试将一个数字除以 0,我们可以检查此错误。

示例

#include<stdio.h>
main() {
   int x = 52;
   int y = 0;
   printf("Div : %f", x/y);
}

输出

Program crashes during runtime.

链接错误

这种错误发生在程序成功编译并尝试将不同的目标文件与主目标文件链接时。发生此错误时,不会生成可执行文件。例如,一些错误的函数原型、不正确的头文件等。如果 main() 写成 Main(),这将产生链接错误。

示例

#include<stdio.h>
main() {
   int x = 52;
   int y = 0;
   printf("Div : %f", x/y);
}

输出

C:\crossdev\src\mingw-w64-v3-git\mingw-w64-crt\crt\crt0_c.cundefined reference to `WinMain'

逻辑错误

有时,我们可能无法获得预期的输出。即使语法和其他方面正确,由于某些逻辑问题,我们也可能无法获得正确的输出。这些被称为逻辑错误。有时,我们在循环后添加分号,这在语法上是正确的,但会创建一个空循环。在这种情况下,它将显示预期的输出。

示例

#include<stdio.h>
main() {
   int i;
   for(i = 0; i<5; i++); {
      printf("Hello World");
   }
}

输出

Here we want the line will be printed five times. But only one time it will be printed for the block of code.

语义错误

这种错误发生在语法正确但没有意义的情况下。这就像语法错误。如果在赋值运算符的左侧给出一些表达式,这可能会产生语义错误。

示例

#include<stdio.h>

main() {
   int x, y, z;
   x = 10;
   y = 20;
   x + y = z;
}

输出

[Error] lvalue required as left operand of assignment

更新于:2021年12月3日

12K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.