MSDN 文章《C++ 类型系统(现代 C++)》() 有一些适合初学者的概念。 复制解释如下:

1.变量

变量:大量数据的符号名称,以便该名称可用于在定义它的整个代码范围内访问它所引用的数据。 在 C++ 中,“变量”通常用于指代标量数据类型的实例,而其他类型的实例通常称为“对象”。

变量是某些数据的“符号名称”。

……

“变量”通常用于指代标量数据类型的实例。 (“标量数据类型”好像翻译成“基本数据类型”比较好理解,在大牛梁的《Java程序设计入门》教材中也有类似的说法)

其他类型的实例通常被称为“对象”

c++好玩的代码_c 代码—验证码图片代码_c和c 代码精粹

注:变量的类型(type)表示该变量引用的“一些数据”所占用的存储空间(字节数)

2.类型

C++ 是一种强类型语言,也是静态类型的; 每个对象都有一个类型,并且该类型永远不会改变(不要与静态数据对象混淆)。

C++ 是一种强类型语言,也是一种静态类型语言;

简单的理解就是:每个对象都有一个类型,在对象的生命周期中,类型永远不会改变。

在 C++03 标准中,必须定义每个变量以指示其类型。 在定义函数时,还需要指定函数的返回值类型和参数类型。 这样比较麻烦c++好玩的代码,比如下面的代码:

//代码1

c 代码—验证码图片代码_c和c 代码精粹_c++好玩的代码

整数 = 0;

布尔 f(int z = 8){

如果(z > x)返回真;

否则返回假;

}

如果上面的代码是用动态类型语言 Python(一种最近受到深度学习和人工智能推动的语言)编写的,它将是:

# 代码 2

x = 0

def f(z = 8):

如果 z > x:

返回真

别的:

返回假

同样的代码长度,Python可以懒得去考虑变量函数的类型

c和c 代码精粹_c 代码—验证码图片代码_c++好玩的代码

在C++11中c++好玩的代码,几乎无用的关键字auto被赋予了新的功能:类型推断

// 代码 3

autox = 0; //编译器会推断x的类型:根据初始值“0”的类型,判断x是int类型

自动; //编译器试图推导出y的类型,但是得不到类型,会报错

在C++14中,增加了函数返回值类型的推断,所以【代码1】可以写成如下:

// 代码4,编译时语言标准选项需要设置为c++14

汽车 x = 0;

c++好玩的代码_c 代码—验证码图片代码_c和c 代码精粹

自动 f(自动 z = 8){

如果(z > x)返回真;

否则返回假;

}

使用3个autos,虽然比code 2多了两次击键,但是作为程序员,我们不需要再考虑变量类型了。 C++ 看起来有点像动态类型语言。

不过,虽然看起来有点相似,但本质上还是一门静态类型语言,可以在编译时检测类型不匹配问题,减少运行时类型相关的bug。

在本文开头提到的MSDN文章中,有一些比较深入的讨论。 如果您有兴趣,请看一看。