C++基础入门笔记(二)数据类型基础

C++基础入门笔记(二)数据类型基础

你学或不学,C++就在那里,不停地勾引着你

内容基于黑马程序员c++课程讲义,自己补充添加了一小小部分,放在这里作为自己日后复习的参考。(强烈推荐这个入门课程,B站上就有哦)

黑马讲义原文件点这里自取哈,共同学习共同进步。

2 数据类型

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

数据类型存在的意义:就是给变量分配合适的内存空间,以存储变量表示的数据内容

什么叫合适?比如:储存 10 这个数字,int(4个字符)的空间就够了,如果使用 long(8个字符)就会造成内存空间的浪费。

2.1 整型

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

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

数据类型占用空间取值范围
short(短整型)2字节(-2^15 ~ 2^15-1)
int(整型)(用的最多)4字节(-2^31 ~ 2^31-1)
long(长整形)Windows为4字节,Linux为4字节(32位),8字节(64位)(-2^31 ~ 2^31-1)
long long(长长整形)8字节(-2^63 ~ 2^63-1)

note:变量占用空间越大,所能表示的数值范围就就越大。

#include<iostream>
using namespace std;

int main() 
{
	//1、短整型(-32768~32767)
    //short num1 = 10; //没有超出空间存储值的范围,能够正常显示
    short num1 = 32768; //超出了存储范围,会显示错误 num1=-32768
    
    //2、整型
    int num2 = 32768;//没有超出空间存储值的范围,能够正常显示
    
    //3、长整形
    long num3 = 10;
    
    //4、长长整型
    long long num4 = 10;
    
    //输出上述几个数
    cout << "num1=" << num1 << endl;
    cout << "num2=" << num2 << endl;
    cout << "num3=" << num3 << endl;
    cout << "num4=" << num4 << endl;
    
	system("pause");
	return 0;
}

2.2 sizeof关键字

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

​ 所以数据类型所占内存大小不用专门去记,sizeof一下就OK了

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

示例:

#include<iostream>
using namespace std;

int main() 
{
	//整型:short		int		long		long long
    //可以用sizeof求出数据类型占用内存的大小
    
    short num1 = 10;
    cout << "short 类型所占内存空间为:" << sizeof(num1) << endl;
    
    int num2 = 10;
    cout << "int 类型所占内存空间为: " << sizeof(num2) << endl;
    
    long num3 = 10;
    cout << "long 类型所占内存空间为: " << sizeof(num3) << endl;
    
    long long num4 = 10;
    cout << "long long类型所占内存空间为: " << sizeof(num4) << endl;
    
	
    cout << "short 类型所占内存空间为: " << sizeof(short) << endl;

	cout << "int 类型所占内存空间为: " << sizeof(int) << endl;

	cout << "long 类型所占内存空间为: " << sizeof(long) << endl;

	cout << "long long 类型所占内存空间为: " << sizeof(long long) << endl;

	system("pause");

	return 0;
}

整型结论

  • 占用空间:short < int <= long <= long long

2.3 实型(浮点型)

作用:用于表示小数

浮点型变量分为两种:

  1. 单精度float
  2. 双精度double

两者的区别在于表示的有效数字范围不同。(注意有效数字也包括小数点前的数字)

数据类型占用空间有效数字范围
float4字节7位有效数字
double8字节15~16位有效数字

示例:

#include<iostream>
using namespace std;

int main() {
	
    //默认情况下,输出一个小数,会显示六位有效数字
    
	float f1 = 3.14f; //3.14后添加f的原因:没有f的话,编译器见到3.14会先默认其为double型,再将其转换为float,而加上f后就直接视为float
	double d1 = 3.1415926; //显示:3.14159,因为默认为6位有效数字

	cout << f1 << endl;
	cout << d1<< endl;
	
    //统计float和double占用内存空间,sizeof欢迎您
	cout << "float  sizeof = " << sizeof(f1) << endl;
	cout << "double sizeof = " << sizeof(d1) << endl;

	//科学计数法,e后为正数:*10^ ; e后为负数: *0.1^ 
	float f2 = 3e2; // 3 * 10 ^ 2 
	cout << "f2 = " << f2 << endl; //显示为300

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

	system("pause");

	return 0;
}

2.4 字符型

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

语法:char ch = 'a';

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

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

  • C和C++中字符型变量只占用==1个字节==。
  • 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元
  • 也就是说每一个字符都对应着一个数字编号,电脑把这个数字转换为二进制数再存到内存中去

示例:

#include<iostream>
using namespace std;

int main() {
	//学习字符型的几个步骤:
    //1、字符型变量的创建方式
    char ch = 'a';
    cout << ch << endl;
    
    //2、字符型变量所占内存的大小
    cout << "char字符型变量占用内存空间为:" << sizeof(char) << endl;
    
    //3、字符型变量常见错误
    //char ch2 = "b"; //报错,不能用双引号
    //char ch2 = 'abcdef'; //报错,只能有一个字符
    
    //4、字符型变量对应的ASCII编码
    cout << "字符a对应的ACSII码值为:" << (int)ch << endl; //(int)为强制类型转换,将ch转换为int型
    cout << "字符A对应的ASCII码值为:" << (int)'A' << endl;
    //要记的常用的:
    //a  --  97
    //A  --  65
    
    //可以用ASCII值给字符型赋值
    char ch3;
    ch3 = 97;
    cout << "ASCII码97表示的字符是:" << ch3 << endl;
    
    
    cout << "\n**********课件原有内容**********" << endl;
	//char ch = 'a';
	cout << ch << endl;
	cout << sizeof(char) << endl;

	//ch = "abcde"; //错误,不可以用双引号
	//ch = 'abcde'; //错误,单引号内只能引用一个字符

	cout << (int)ch << endl;  //查看字符a对应的ASCII码
	ch = 97; //可以直接用ASCII给字符型变量赋值
	cout << ch << endl;

	system("pause");

	return 0;
}

ASCII码表格:

ASCII控制字符ASCII字符ASCII字符ASCII字符
0NUT32(space)64@96
1SOH33!65A97a
2STX34"66B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL39,71G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR45-77M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92/124|
29GS61=93]125}
30RS62>94^126`
31US63?95_127DEL

ASCII 码大致由以下两部分组成:

  • ASCII 非打印控制字符: ASCII 表上的数字 0-31 分配给了控制字符,用于控制像打印机等一些外围设备。
  • ASCII 打印字符:数字 32-63-95-126 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。

要记住的:

​ A – 65 ; a – 97

2.5 转义字符

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

现阶段我们常用的转义字符有:\n \\ \t

转义字符含义ASCII码值(十进制)
\a警报007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\\代表一个反斜线字符 \092
\’代表一个单引号(撇号)字符039
\"代表一个双引号字符034
?代表一个问号063
\0数字0000
\ddd8进制转义字符,d范围0~73位8进制
\xhh16进制转义字符,h范围09,af,A~F3位16进制

示例:

#include<iostream>
using namespace std;

int main() {
	
	//转义字符
    cout << "换行了\n" << "水平制表符\t相当于Tap一次,输出一个反斜杠\\" << endl; 
    
    //反斜杠
	cout << "\\" << endl;
    
	//水平制表符(相当于8个字符),输出时像是一个表格,可以整齐的输出数据
    cout << "aaaa\tHelloWorld" << endl;
    cout << "aa\tHelloWorld" << endl;
    /*输出为:
    aaaa    HelloWorld
    aa      HelloWorld
    */
    
    cout << "\tHello" << endl;
	//换行符
    cout << "\n" << endl;

	system("pause");

	return 0;
}

2.6 字符串型

作用:用于表示一串字符

两种风格

  1. C风格字符串char 变量名[] = "字符串值"

    注意事项:与字符型相比

    ​ 1. 多了个方括号[]

    ​ 2. 字符串用的是双引号" "

    示例:

int main() {

char str1[] = "hello world"; //与字符型相比,多了个方括号[],字符串用的是双引号""
cout << str1 << endl;
   
system("pause");

return 0;

}


> 注意:C风格的字符串要用双引号括起来

2. **C++风格字符串**:  `string  变量名 = "字符串值"`

示例:

```C++
#include<iostream>
#include<string>
using namespace std;

int main() {

//2、c++风格字符串
 string str1 = "Hello World";
 string str = "hello world";
 cout << str1 << endl;

 system("pause");

 return 0;
}

注意:C++风格字符串,需要加入头文件#include<string>

​ VS2019中好像不加头文件也能直接定义string了?

2.7 布尔类型 bool

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

bool类型只有两个值:

  • true — 真(本质是1)
  • false — 假(本质是0)
  • 条件判断时:非0的int都是真

bool类型占1个字节大小

示例:

#include<iostream>
using namespace std;

int main() 
{
	//1、创建bool数据类型
    bool flag1 = true; //真
    cout << "flag1 = true时,flag1的值为:" << flag1 << endl;
    cout << "也就是说true就是" << flag1 << endl;
    
    flag1 = false; //更改flag1的值
    cout << "flag1 = false时,flag1的值为:" << flag1 << endl;
    //2、查看bool类型所占内存空间
    cout << "bool类型所占内存空间为:" << sizeof(flag1) << "个字节" << endl;
    
    cout << "\n**********课件原有内容**********" << endl;
    bool flag = true;
	cout << flag << endl; // 1

	flag = false;
	cout << flag << endl; // 0

	cout << "size of bool = " << sizeof(bool) << endl; //1
	
	system("pause");

	return 0;
}

2.8 数据的输入

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

**关键字:**cin

语法: cin >> 变量

示例:

#include<iostream>
#include<string>
using namespace std;

int main()
{
    //各种已学类型从键盘上的输入
    
    //1、整型
    //创建一个整型
    int a = 10;
    cout << "请给整型变量a赋值:" << endl;
    cin >> a;
    cout << "您输入的整型变量a的值为:"<< a << endl;
    
    //2、浮点型(实型)
    float f = 3.14f;
    cout << "请给浮点型变量f赋值:" << endl;
    cin >> f;
    cout << "您输入的浮点型变量f的值为:"<< f << endl;
    
    //3、字符型 
    char ch = 'a';
    cout << "请给字符型变量ch赋值:" << endl;
    cin >> ch;
    cout << "您输入的字符型变量ch的值为:"<< ch << endl;
    
    //4、字符串型(常用的是C++风格字符串)
    string str = "Hello world";
    cout << "请给字符串型变量str赋值:" << endl;
    cin >> str;
    cout << "您输入的字符串型变量str的值为:"<< str << endl;
    
    //5、布尔类型
    bool flag = false;
    cout << "请给布尔类型变量 flag赋值:" << endl;
    cin >> flag; //输入为非0的int时,输出为1,但输入为字母时,输出为0
    cout << "您输入的布尔类型变量flag的值为:"<<  flag << endl;
    
    
    
    cout << "\n**********课件原有内容**********" << endl;
	//整型输入
	int a = 0;
	cout << "请输入整型变量:" << endl;
	cin >> a;
	cout << a << endl;

	//浮点型输入
	double d = 0;
	cout << "请输入浮点型变量:" << endl;
	cin >> d;
	cout << d << endl;

	//字符型输入
	char ch = 0;
	cout << "请输入字符型变量:" << endl;
	cin >> ch;
	cout << ch << endl;

	//字符串型输入
	string str;
	cout << "请输入字符串型变量:" << endl;
	cin >> str;
	cout << str << endl;

	//布尔类型输入
	bool flag = true;
	cout << "请输入布尔型变量:" << endl;
	cin >> flag;
	cout << flag << endl;
	system("pause");
	return EXIT_SUCCESS;
}
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值