C++从入门到精通学习笔记第三章

第三章 C++基础语法



前言

记录C++的一些基本语法


1. 基本内置类型

就是定义的数据类型,C++作为一种面向对象的编程语言,可以很自由地定义自己想要的类型,除此之外,C++本身也定义了一组表示布尔值、整数、浮点数和字符的基本内置类型。

类型最小存储空间
char(字符型)8位
wchar_t(宽字符型)16位
short(短整型)16位
int(整型)16位
long int(长整型)32位
float(单精度浮点型)6位有效数字
double(双精度浮点型)10位有效数字
long double(扩展精度浮点型)10位有效数字
bool(布尔型)无规定

sizeif()函数可以获得某种数据类型的具体大小。
还有一个void类型,不过不是用来表示具体数值的类型,void类型一般只用在函数定义中,表示函数没有返回值,或表示通用的指针类型,在后面的章节会有介绍。

1.1 整型

short、int和long int类型都是用来表示整数的整型。整数类型也分为有符号(signed)和无符号(unsigned)两种,可以通过声明signed int和unsigned int来区分。如果不指明的话,整型默认都是有符号的,int就代表signed int。
有符号的话,数字的第一位就表示符号,1为负,0为正,无符号数只能表示非负数,由于不需要第一位来区分正负,无符号数可以表示的正数范围会比有符号数多一倍。

//chapter 3_1

#include <iostream>
 using namespace std;

// 整型的存储空间 
int main() 
{
	cout << "short的存储空间为" << sizeof(short) << "字节。" << endl;
	cout << "unsigned short的存储空间为" << sizeof(unsigned short)<< "字节。" << endl;
	cout << "int的存储空间为" << sizeof(int) << "字节。" << endl;
	cout << "unsigned int的存储空间为" << sizeof(unsigned int) << "字节。"<< endl;
	cout << "long int的存储空间为" << sizeof(long int) << "字节。" << endl;
	cout << "unsigned long int的存储空间为" << sizeof(unsigned long int) << "字节。" << endl;
	return 0;
	
}

代码展示了当前编译器下各整形的存储空间,sizeof()函数返回了类型的字节数。
在这里插入图片描述
各整形的大小范围如表中所示。

类型大小范围
short-32768~ 32767
int-2147483648~2147483647
long int-2147483648~2147483647
unsigned short0~65535
unsigned int0~4294967295
unsigned long int0~4294967295

以short型为例,看看如果输入数字超出数值类型大小范围会怎么样。

//chapter 3_2

#include <iostream>
using namespace std;

// 整数溢出

int main()
{
	short a = -32769; // 比short型最小值小1
	short b = 32768; // 比short型最大值大1
	cout << "short下溢值:" << a << endl << "short上溢值:" << b << endl;
}

输出结果:
在这里插入图片描述
可以看到发生了溢出,最小值向下溢出了叫作下溢,会回到最大值。
最大值向上溢出了叫作上溢,会回到最小值。

1.2 字符型

有char和wchar_t两种类型。char的大小至少是1个字节,范围一般是-128~127。wchar_t是宽字符类型,至少是2个字节。
字符型也可以进行加减乘除的计算和其他操作,也可分为有符号和无符号。
区别在于:1、字符型是否有符号取决于编译器;2、有效范围内的字符型变量在打印的时候会被解读成字符而不是数字。

//chapter 3_3

#include <iostream>
using namespace std;

int main()
{
	char a = 97;
	char b = 2;
	cout << "直接输出结果为:" << a << endl << "使用int函数转化为整型" << int(a) << endl;
	// 计算a+b
	cout << "直接输出结果为:" << a+b << endl << "使用char函数转化为字符型:" << char(a+b) << endl;
}

输出结果为:
在这里插入图片描述
从结果中可以看出,字符型变量直接打印出来会输出字符,而字符型变量相加会被转化为整型。
在ASCII编码系统中,“a”对应的值就是“97”,这也是为什么代码中把97赋值给变量a最后打印输出为字符a。
用代码打印ASCII编码系统的所有字符。

//chapter 3_4

#include <iostream>
using namespace std;

int main()
{
	for (int i = 0; i < 128; i++)
	{
		char ch = i;
		cout << i << " :" << ch <<"   ";
	     // 每打印5个字符换一行
	    if (i % 5 == 0) 
			cout << endl;
	}
	return 0;
}

结果显示为:
在这里插入图片描述
由于有些字符是控制字符(0~31和127),导致输出结果乱码了,小问题,https://baike.baidu.com/item/ASCII 网址中有对ASCII编码系统的介绍。

1.3 浮点型

浮点型用来表示小数数据类型。
包括float、double和long double三种数据类型。
float需要保证有6位有效数字,double和long double都需要保证有10位有效数字。

 //chapter 3_3

#include <iostream>
 using namespace std;

// 浮点型的存储空间

 int main() 
 {
	cout << "float的存储空间为" << sizeof(float) << "字节。" << endl;
	cout << "double的存储空间为" << sizeof(double) << "字节。" << endl;
	cout << "long double的存储空间为" << sizeof(long double) << "字节。"<< endl;				
	return 0;

}

运行结果展示:
在这里插入图片描述

1.4 布尔型

布尔型bool的值只有true(真)和false(假)两种。将整数赋值给布尔类型,0会转换为False,非0则都转换为True。

//chapter 3_6

#include <iostream>
 using namespace std;

// 浮点型的存储空间

 int main()
 {
	 cout << "bool的存储空间为" << sizeof(bool) << "字节。" << endl;
	 bool Flag1 = true;
	 bool Flag2 = false;
	 cout << "把true和false赋值给bool的结果为:" << Flag1 << "和" <<Flag2 << endl;
	 Flag1 = 2;
	 Flag2 = 0;
	 cout << "把2和0赋值给bool的结果为:" << Flag1 << "和" << Flag2 << endl;
	 cout << "之前两个bool值与1相加的结果为:" << Flag1 + 1 + Flag2<< endl;
	 return 0;
 }

运行结果展示:
在这里插入图片描述
可以看到,打印输出的时候还是会打出1和0,而不是true和false。
最后一行运算代码 Flag1由于是布尔类型,所以值2自动转换为1,再与整型1相加,结果默认转换为整型2.
布尔型一般用于表示一段逻辑或关系表达式的结果。

2. 常量与变量

------------下次继续--------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B-)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值