📅  最后修改于: 2020-10-22 00:50:49             🧑  作者: Mango
编译时和运行时是软件开发中使用的两个编程术语。编译时是将源代码转换为可执行代码的时间,而运行时是指开始运行可执行代码的时间。编译时和运行时都引用不同类型的错误。
编译时错误是我们编写错误语法时发生的错误。如果我们编写任何编程语言的语法或语义错误,那么编译器将抛出编译时错误。在从程序中清除所有错误之前,编译器将不允许运行该程序。从程序中删除所有错误后,编译器将生成可执行文件。
编译时错误可能是:
当程序员不遵循任何编程语言的语法时,编译器将引发语法错误。
例如,
整数a,b:
上面的声明像C一样生成编译时错误,每个语句都以分号结尾,但是我们在该语句的末尾添加了一个冒号(:)。
当语句对编译器没有意义时,存在语义错误。
例如,
a + b = c;
上面的语句抛出编译时错误。在上面的语句中,我们将’c’的值分配给’a’和’b’的和,这在C编程语言中是不可能的,因为它只能在赋值运算符的左边包含一个变量,而在赋值运算符的右边仅包含一个变量。赋值运算符可以包含多个变量。
上面的语句可以改写为:
c = a + b;
运行时错误是在执行期间和编译之后发生的错误。运行时错误的示例为零除以此类推。由于编译器未指出这些错误,因此不容易检测到这些错误。
让我们看一下编译时和运行时之间的区别:
Compile-time | Runtime |
---|---|
The compile-time errors are the errors which are produced at the compile-time, and they are detected by the compiler. | The runtime errors are the errors which are not generated by the compiler and produce an unpredictable result at the execution time. |
In this case, the compiler prevents the code from execution if it detects an error in the program. | In this case, the compiler does not detect the error, so it cannot prevent the code from the execution. |
It contains the syntax and semantic errors such as missing semicolon at the end of the statement. | It contains the errors such as division by zero, determining the square root of a negative number. |
编译时错误示例
#include
int main()
{
int a=20;
printf("The value of a is : %d",a):
return 0;
}
在上面的代码中,我们尝试print’a’的值,但是会引发错误。我们将冒号放在语句的末尾而不是分号,因此此代码生成了编译时错误。
输出量
运行时错误示例
#include
int main()
{
int a=20;
int b=a/0; // division by zero
printf("The value of b is : %d",b):
return 0;
}
在上面的代码中,我们尝试将’b’的值除以零,这将引发运行时错误。
输出量