0
点赞
收藏
分享

微信扫一扫

C++从0到1的入门级教学(二)——数据类型

慕容冲_a4b8 2022-03-23 阅读 54
c++

文章目录

2 数据类型

2.1 简单变量

程序通常都需要存储信息,而当我们把信息存储在计算机中,程序必须记录3个基本属性:

  1. 信息要存储在哪里?
  2. 要存储什么值?
  3. 存储何种类型的信息

在下面的小节中,我们将会着重谈到这些东西。

C++规定在创建一个变量或者常量时,必须要指定相应的数据类型,否则无法给变量分配内存。

image-20211028102451552

那上面这个图来举例,我们给利用int指定系统给变量开辟多大的空间,10用来往空间里面存放数据,而a作为变量名用来操纵这个数据,虽然C++没有告诉你这个值存储在内存的什么位置,但程序确实记录了这个位置,如果你想查看这个值所在的内存地址,你只需要用&即可访问。

由此可知,数据类型存在的意义是给变量分配合适的内存空间。

面向对象编程的本质是设计并扩展自己的数据类型,设计自己的数据类型就是让类型与数据匹配。如果正确做到了这一点,以后使用自己的数据类型会方便很多。然而,在创建自己的类型之前,必须先了解一些C++内置的基本类型:如整数、浮点数。但是C++提供了多种变体,包括数组、字符串、指针和结构体等。

2.2 整型

作用:整型变量表示的是整数类型的数据

C++中能够表示整型的类型由以下几种方式,区别在于所占内存空间不同:

数据类型占用字节取值范围
short(短整型)2(-2^15 ~ 2^15-1)
int(整型)4(-2^31 ~ 2^31-1)
long(长整型)window为4,linux为4(32位),8(64位)(-2^31 ~ 2^31-1)
long long(长长整型)8(-2^63 ~ 2^63-1)

我们需要谈谈位和字节的知识。

计算机内存由一些叫位的单元组成,C++中的这些整型都通过使用不同数目的位来存储值。如果我们用位来衡量上面的数据类型,那么:

数据类型占用位
short至少16位
int至少和short一样长
long至少32位
long long至少64位

前面说到的位(Bit)可以当做电子开关,可以开可以关,关表示0,开表示1;比如8位的内存,1位就能0和1,那么8位就是 2 8 2^8 28即256。所以8位的单元可以理解为0 ~ 255或者-128 ~ 127,按刚才的理解的话,每增加一位,组合数翻倍。

字节(byte)通常指的是8位的内存单元。从这个意义来说,字节指的是描述计算机内存量的度量单位,1KB等于1024字节,1MB等于1024KB。

示例

#include <iostream>
using namespace std;

int main() 
{
	//1、短整型
	short num1 = 10;
	cout << sizeof(num1) << endl;

	//2、整型
	int num2 = 10;
	cout << sizeof(num2) << endl;

	//3、长整型
	long num3 = 10;
	cout << sizeof(num3) << endl;

	//4、长长整型
	long long num4 = 10;
	cout << sizeof(num4) << endl;
	system("pause");
	return 0;
}

2.3 sizeof关键字

作用:利用sizeof关键字可以统计数据类型所占内存大小

语法sizeof(数据类型/变量)

示例

#include <iostream>
using namespace std;

int main() 
{
	//1、短整型
	short num1 = 10;
	cout << sizeof(num1) << endl;

	//2、整型
	int num2 = 10;
	cout << sizeof(num2) << endl;

	//3、长整型
	long num3 = 10;
	cout << sizeof(num3) << endl;

	//4、长长整型
	long long num4 = 10;
	cout << sizeof(num4) << endl;
	system("pause");
	return 0;
}

2.4 实型(浮点型)

作用:用于表示小数

浮点型变量分为两种:

  • 单精度float

  • 双精度double

两者的区别在于表示的有效数字范围不同。

数据类型占用字节有效数字范围
float47位有效数字
double815-16位有效数字

实例:

#include <iostream>
using namespace std;

int main() 
{
	//1、单精度 float
	//2、双精度 double
	float f1 = 3.14f;
	cout << "f1 = " << f1 << endl;

	double d1 = 3.14;
	cout << "d1 = " << d1 << endl;

	cout << "float sizeof = " << sizeof(f1) << endl;
	cout << "double sizeof = " << sizeof(d1) << endl;
	
	//科学计数法
	float f2 = 3e2;//3*10^2
	cout << "f2 = " << f2 << endl;

	float f3 = 3e-2;//3*0.1^2
	cout << "f3 = " << f3 << endl;

	system("pause");
	return 0;
}

2.5 字符型

作用:字符型变量用于显示单个字符

语法char ch = 'a'

【注1:在显示字符型变量时,用单引号将字符括起来,不要用双引号】

【注2:单引号内只能有一个字符,不可以是字符串】

  • C和C++中字符型变量只占用一个字节
  • 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入存储单元。

实例

#include <iostream>
using namespace std;

int main() 
{
	//1、字符型变量创建方式
	char ch = 'a';
	cout << ch << endl;
	
	//2、字符型变量所占内存大小
	cout << "char ch sizeof = " << sizeof(ch) << endl;

	//3、字符型变量常见错误
	//char ch2 = "b";//创建字符型变量的时候,要用单引号
	//char ch2 = 'abcdef'; //创建字符型变量的时候,单引号内只能有一个字符

	//4、字符型变量对应ASCll编码
	//a - 97
	cout << (int)ch << endl;
	system("pause");
	return 0;
}

2.6 转义字符

作用:用于表示一些不能显示出来的ASCII的字符

2.7 布尔类型

作用:布尔数据类型代表真或假的值

bool类型只有两种值:

  • true:真(本质是1)
  • false:假(本质是0)

bool类型占一个字节大小

示例

#include <iostream>
using namespace std;

int main() 
{
	//1、创建bool数据类型
	bool flag = true;//true代表真
	cout << flag << endl;

	flag = false;//false代表假
	cout << flag << endl;

	//本质上1代表真,0代表假

	cout << "size of bool = " << sizeof(bool) << endl;

	system("pause");
	return 0;
}

2.8 数据的输入

作用:用于从键盘获取数据

关键字:cin

语法cin>>变量

示例

#include <iostream>
#include <string>
using namespace std;
int main() 
{
	//1、整型
	int a = 0;
	cout << "请给整型变量a赋值:" << endl;
	cin >> a;
	cout << "整型变量a = " << a << endl;

	//2、浮点型
	float f = 3.14f;
	cout << "请给浮点型变量赋值:" << endl;
	cin >> f;
	cout << "浮点型变量f = " << f << endl;
	
	//3、字符型
	char ch = 'a';
	cout << "请给字符型变量ch赋值:" << endl;
	cin >> ch;
	cout << "字符型变量f = " << ch << endl;

	//4、字符串型
	string str = "hello world";
	cout << "请给字符串str赋值:" << endl;
	cin >> str;
	cout << "字符串str" << str << endl;

	//5、布尔类型
	bool flag = false;
	cout << "请给布尔类型flag赋值" << flag << endl;
	cin >> flag;
	cout << "布尔类型flag = " << flag << endl;
	//只要非零的数都是真

	system("pause");
	return 0;
}

2.9 新特性

初始化

在以前学过的任何编程语言中,我们初始化一个变量都是采用如下方式:

int a = 10;

但是在C++11中,我们有另外一种初始化方式,这种方式多用于数组或结构体,但是在C++98中,也可用于单值变量,如下:

int a = {10};

将大括号初始化器用于单值变量的情况不多,但是C++11标准使得这种情况变多了。首先如果采用上面的方式初始化的话,我们可以不使用等号:

int a{10};

其次,大括号内甚至可以不放东西,这样会初始化为0。

举报

相关推荐

0 条评论