C++程序 展示错误类型
在任何一种编程语言中,错误都是常见的。如果我们漏掉了任何语法,例如括号或分号,那么就会出现语法错误。除此之外,在代码执行过程中我们还会出现运行时错误。类似地,以下是错误的分类:
- 语法错误
- 运行时错误
- 逻辑错误
- 链接错误
- 语义错误
1. 语法错误
这些也称为编译时错误。当 C++ 的写作技巧或语法规则被破坏时,这些错误就会发生。这些类型的错误通常在编译之前由编译器标记。
例如: 在下面的程序中,因为输出语句 (cout) 结尾处缺少分号而导致错误,该错误被称为语法错误。
// C++程序展示
// 语法错误
#include <iostream>
using namespace std;
int main() {
cout << "Geeks for geeks!" // 缺少分号
return 0;
}
输出:
语法错误
2. 运行时错误
这种类型的错误发生在程序运行时。由于这不是编译错误,因此编译将成功完成。
当数字被除数或取模除数除时,这些错误会由于出现分段故障而发生。
例如: 让我们考虑一个长度为5的数组,即 array[5],但是在运行时,如果我们尝试访问10个元素,即数组array[10],那么就会出现分段故障错误,称为运行时错误。只给出长度为5的数组
// C++程序展示
// 运行时错误
#include <iostream>
using namespace std;
int main()
{
int array[5];
return 0;
}
而对于输出部分,如果我们在运行时尝试访问超过5个,也就是尝试访问数组array[10],那么就会出现错误。
输出:
分段故障
3. 逻辑错误
即使语法和其他因素正确,由于逻辑问题,我们可能无法获得期望的结果。这被称为逻辑错误。有时我们在循环后放置分号,虽然在语法上是正确的,但会导致一个空循环。在这种情况下,它将显示所需的输出。
例如: 在下面的示例中,for循环迭代5次,但由于for循环结尾有一个分号,因此只显示一次输出。这种类型的错误称为逻辑错误。
// C++程序展示
// 逻辑错误
#include <iostream>
using namespace std;
int main() {
int j;
// 引起逻辑错误的原因
for(j=0;j<=5;j++);
{
cout << "Geeks for geeks";
}
return 0;
}
输出
Geeks for geeks
4. 链接错误
当程序成功编译并尝试将不同的目标文件链接到主目标文件时,将会出现错误。当出现此类错误时,可执行文件将不会生成。原因可能是不正确的函数原型、不正确的头文件或其他因素导致的。如果将main()写成Main(),则会生成连接错误。
示例:
// C++ program to demonstrate
// a linker error
#include <iostream>
using namespace std;
int Main() {
cout << "Geeks for geeks";
return 0;
}
输出:
连接错误
5. 语义错误
**** 当一个句子在语法上是正确的,但却没有意义时,就会出现语义错误。这与语法错误类似。如果将表达式输入到赋值运算符的左侧,可能会导致语义错误。
示例:
// C++ program to demonstrate
// a semantic error
#include <iostream>
using namespace std;
int main()
{
int a = 10, b = 20, c;
a + b = c;
cout << c;
return 0;
}
输出:
语义错误