1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C++基础学习(02)--(数据类型 变量类型 变量作用域 常量 修饰符类型)

C++基础学习(02)--(数据类型 变量类型 变量作用域 常量 修饰符类型)

时间:2023-04-12 08:42:46

相关推荐

C++基础学习(02)--(数据类型 变量类型 变量作用域 常量 修饰符类型)

文章目录

目录一. 数据类型C++ 中的数据类型typedefenumeration枚举类型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构造函数只能被显式调用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。