编译时和运行时是软件开发中使用的两个编程术语。编译时是将源代码转换为可执行代码的时间,而运行时是可执行代码开始运行的时间。编译时和运行时都指的是不同类型的错误。

编译时错误

编译时错误是在编写错误的语法时发生的错误。如果我们编写错误的语法或语义,编译器将抛出编译时错误。编译器将不允许运行程序,直到程序中的所有错误都被移除。当所有错误都从程序中移除后,编译器将生成可执行文件。

编译时错误可以是:

  • 语法错误
  • 语义错误

语法错误

当程序员不遵循任何编程语言的语法时,编译器将抛出语法错误。

例如,

int a, b:

上述声明会生成编译时错误,因为在C语言中,每个语句都以分号结束,但我们在语句的末尾放了一个冒号(:)。

语义错误

语义错误是当语句对编译器来说没有意义时发生的错误。

例如,

a+b=c;

上述语句会抛出编译时错误。在上述语句中,我们将'a'和'b'的求和值赋给'c',这在C编程语言中是不可能的,因为赋值运算符左侧只能包含一个变量,而赋值运算符右侧可以包含多个变量。

上述语句可以重新编写为:

c=a+b;

运行时错误

运行时错误是在执行过程中发生的错误,发生在编译之后。运行时错误的示例包括除以零等。这些错误很难检测,因为编译器不会指出这些错误。

让我们来看一下编译时错误和运行时错误之间的区别:

编译时错误运行时错误
编译时错误是在编译时生成的错误,由编译器检测到。运行时错误是不由编译器生成的错误,在执行时产生不可预测的结果。
在这种情况下,如果编译器在程序中检测到错误,则会阻止代码执行。在这种情况下,编译器无法检测到错误,因此无法阻止代码执行。
它包含语法和语义错误,例如语句末尾缺少分号。它包含错误,例如除以零,计算负数的平方根。

编译时错误示例

#include <stdio.h>  
int main()  
{  
    int a=20;  
    printf("The value of a is : %d",a):  
    return 0;  
}  

在上面的代码中,我们试图打印'a'的值,但它会抛出一个错误。我们在语句末尾放置了冒号而不是分号,因此这段代码会生成一个编译时错误。

输出

1.png

运行时错误示例

#include <stdio.h>  
int main()  
{  
    int a=20;  
    int b=a/0; // division by zero  
    printf("The value of b is : %d",b):  
    return 0;  
}  

在上面的代码中,我们试图将'b'的值除以零,这会抛出一个运行时错误。

输出
2.png

标签: c语言, c语言教程, c语言技术, c语言学习, c语言学习教程, c语言下载, c语言开发, c语言入门教程, c语言进阶教程, c语言高级教程, c语言面试题, c语言笔试题, c语言编程思想