关于 C 语言的 2 个问题
1. C 语言是静态的,还是动态的?
静态类型语言:如果在编译时知道变量的类型,则该语言是静态类型的。我们经常说到的 Java、C 和 C++ 在写代码的时候必须指定每个变量的类型。优点就是编译器可以执行各种检查,也就是程序还没跑起来就能找到一些小错误,也就是是在 compile-time 检查出错误的。
动态类型语言:一般是脚本语言,比如说 Perl、Ruby、Python、PHP、JavaScript,可以更快地编写代码,不必每次都指定类型。做 type checking 是在 run-time 的时候去做的。优点是可能代码开发快,但是维护难。
所以,C 语言是静态的。
以上看法,仅代表个人的一些看法。如有不对,请指出。
2. C 语言是强类型的,还是弱类型的?
强类型语言也称为强类型定义语言。是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。
弱类型语言也称为弱类型定义语言。与强类型定义相反。
在 C 程序中,比如:
#include <stdio.h>
int main(void)
{
char a = 'a';
int b = 10;
int c = a + b;
printf("%d\n", c);
return 0;
}
在上述代码中,char 类型和 int 类型是可以直接运算的,因为 char 类型会被提升为 int,这就是 C 中的隐式类型转换,将精度较小的转换为大精度的。从这个意义上讲,它并不符合强类型语言的定义。
#include <stdio.h>
int main()
{
int a = 'abcd';
putchar(a);
return 0;
}
上述代码的结果是 “ d ”,这也说明了 C 语言并不是一个强类型语言。既然它不是强类型语言,那它就是弱类型语言了。
所以,C 语言是弱类型的。
以上看法,仅代表个人的一些看法。如有不对,请指出。