文章目录
- 目录
- 一. 数据类型
- C++ 中的数据类型
- typedef
- enumeration枚举类型
- c++中变量类型
- 二.变量作用域
- 三.常量
- 四.修饰符类型
目录
一. 数据类型
C++ 中的数据类型
使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。
您可能需要存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。
一些基本类型可以使用一个或多个类型修饰符进行修饰:signed , unsigned ,short ,long
下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。
注意:不同系统会有所差异。
从上表可得知,变量的大小会根据编译器和所使用的电脑而有所不同。
下面实例会输出您电脑上各种数据类型的大小。
#include<iostream>
#include<string>
#include <limits>
using namespace std;
int main()
{ cout << "short: \t\t" << "所占字节数:" << sizeof(short); cout << "\t最大值:" << (numeric_limits<short>::max)();cout << "\t\t最小值:"<< (numeric_limits<short>::min)() <<endl;
}
typedef
enumeration枚举类型
例子
#include <iostream>
using namespace std;
enum time {first,second,third,forth,fifth};int main()
{enum time a=fifth;if (a==fifth) {cout << a <<endl;cout << "Succeed!";}return 0;
}
运行结果:
4
Succeed!
c++中变量类型
变量其实只不过是程序可操作的存储区的名称。C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C++ 是大小写敏感的。
基于前一章讲解的基本类型,有以下几种基本的变量类型,将在下一章中进行讲解
注意
C++ 也允许定义各种其他类型的变量,比如枚举、指针、数组、引用、数据结构、类等等,这将会在后续的章节中进行讲解。
变量只能定义一次,可以使用extern关键字在多个文件中声明多次
例子
#include <iostream>
using namespace std;// 变量声明
extern int a, b; //在头文件被申明过
extern int c;
extern float f;int main ()
{// 变量定义int a, b;int c;float f;// 实际初始化a = 10;b = 20;c = a + b;cout << c << endl ;f = 70.0/3.0;cout << f << endl ;return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
30
23.333
**同样的,在函数声明时,提供一个函数名,而函数的实际定义则可以在任何地方进行。**例如:
// 函数声明
int func();int main()
{// 函数调用int i = func();
}// 函数定义
int func()
{return 0;
}
二.变量作用域
在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。下面是一个实例:
全局变量系统自动初始化,局部变量系统不会自动初始化
定义变量时,最好进行初始化
#include <iostream>
using namespace std;// 全局变量声明
int g = 99;// 函数声明
int func();int main()
{// 局部变量声明int g = 10;cout << g << endl;int kk = func();cout << kk << endl;return 0;
}// 函数定义
int func()
{return g;
}
运行结果:
10
99
运行结果:
此时的全局变量为:20
被改变的全局变量为:30
此时的全局变量为:30
三.常量
const 限定符定以后是不可以改变的,所以在定义时赋初值,否则是错误的 ;除非这个变量是用extern修饰的外部变量
四.修饰符类型
explicit构造函数是用来防止隐式转换的。请看下面的代码:
class Test1
{
public:Test1(int n){num=n;}//普通构造函数
private:int num;
};
class Test2
{
public:explicit Test2(int n){num=n;}//explicit(显式)构造函数
private:int num;
};
int main()
{Test1 t1=12;//隐式调用其构造函数,成功Test2 t2=12;//编译错误,不能隐式调用其构造函数Test2 t2(12);//显式调用成功return 0;
}
Test1的构造函数带一个int型的参数,代码23行会隐式转换成调用Test1的这个构造函数。而Test2的构造函数被声明为explicit(显式),这表示不能通过隐式转换来调用这个构造函数,因此代码24行会出现编译错误。
普通构造函数能够被隐式调用。而explicit构造函数只能被显式调用