在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