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

目录

一. 数据类型

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构造函数只能被显式调用

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wangzi11111111/article/details/88388258