C++(学习笔记)处理数据


前言

  本人在阅读C++ primer plus(第六版)的过程中做的笔记,写这篇文章既是为了分享,也是为了以后查阅。以下是本篇文章正式内容。


一、变量名命名规则

  1.在名称中只能使用字母字符、数字和下划线;
  2.名称的第一个字符不能是数字;
  3.区分大小写;
  4.以下划线和大写字母开头或者两个下划线开头的名称被保留给实现(编译器及其使用的资源),尽量不要使用;
  5.名称的长度没有限制。
  变量命名时可以考虑加上前缀,n表示整数(int),d表示双浮点型(double),str表示字符串(string),p表示指针,b表示布尔值(bool),c表示单个字符(char)。

二、整型

  术语宽度(width)用来表示存储整数时使用的内存量,使用的内存越多,宽度越大。C++的基本整型按宽度递增的顺序排列为:char、short、int、long、和C++11新增的long long。

1.位与字节

  • 计算机内存的基本单元是位(bit),8位的内存单元可以设置成256种不同的组合,即2的8次方,16位的则可以设置成65536个不同的值,以此类推;
  • 字节(byte)通常指的是8位的内存单元,1KB等于1024字节,1MB等于1024KB;
  • sizeof运算符返回类型或变量的长度,以字节为单位。
      各整型的最大值、包含的字节数以及该计算机一个字节包含的位数可以通过以下代码获得:
#include <iostream>
#include <climits>													//此头文件包含了整型限制的信息

int main()
{
	int n_char = CHAR_MAX;											//CHAR_MAX是char整型的最大值
	short n_short = SHRT_MAX;										//SHRT_MAX是short整型的最大值
	int n_int = INT_MAX;											//INT_MAX是int整型的最大值
	long n_long = LONG_MAX;											//LONG_MAX是long整型的最大值
	long long n_llong = LLONG_MAX;									//LLONG_MAX是long long整型的最大值

	std::cout << "各整型的字节长度:\n";
	std::cout << "char是:" << sizeof(char) << " byte\n";			//sizeof运算符返回类型或变量的长度,单位为字节
	std::cout << "short是:" << sizeof(short) << " byte\n";
	std::cout << "int是:" << sizeof(int) << " byte\n";
	std::cout << "long是:" << sizeof(long) << " byte\n";
	std::cout << "long long是:" << sizeof(long long) << " byte\n";

	std::cout << "\n每个字节表示" << CHAR_BIT << "位\n\n";			//CHAR_BIT是每个字节表示的位数

	std::cout << "每个整型的最大值:\n";
	std::cout << "char的最大值是:" << n_char << std::endl;
	std::cout << "short的最大值是:" << n_short << std::endl;
	std::cout << "int的最大值是:" << n_int << std::endl;
	std::cout << "long的最大值是:" << n_long << std::endl;
	std::cout << "long long的最大值是:" << n_llong << std::endl;

	std::cin.get();													//按下回车关闭窗口,防止窗口自动关闭
	return 0;
}

2.climits头文件中的符号常量

符号常量表示
CHAR_BITchar的位数
CHAR_MAXchar的最大值
CHAR_MINchar的最小值
SCHAR_MAXsigned char的最大值
SCHAR_MINsigned char的最小值
UCHAR_MAXunsigned char的最大值
SHRT_MAXshort的最大值
SHRT_MINshort的最小值
USHRT_MAXunsigned short的最大值
INT_MAXint的最大值
INT_MINint的最小值
UINT_MAXunsigned int的最大值
LONG_MAXlong的最大值
LONG_MINlong的最小值
ULONG_MAXunsigned long的最大值
LLONG_MAXlong long的最大值
LLONG_MINlong long的最小值
ULLONG_MAXunsigned long long的最大值

3.整型

  整型溢出行为是指如果超越了整型值的范围,则变量将会从值的另一端取值,像里程表一样。例如short shrtA = 32767;将shrtA加1,则会变为-32768,如下图:
整型溢出行为

整型溢出行为
  整型字面值,C++能够以三种不同的计数方式来书写整数:基数为10(十进制)、基数为8(八进制)、基数为16(十六进制),如果第一位为1~9,则基数为10;如果第一位为0~7,则基数为8,例如042,

0 ∗ 8 2 + 4 ∗ 8 1 + 2 ∗ 8 0 0*8^2+4*8^1+2*8^0 082+481+280等于十进制的34;如果前两位为0x或者0X,则基数为16,例如0xA5,
10 ∗ 1 6 1 + 5 ∗ 1 6 0 10*16^1+5*16^0 10161+5160等于十进制的165。
  cout以十进制格式输出整数而不管这些整数是以什么格式存储在程序中的。头文件iostream提供了控制符dec、hex和oct,分别用于指示cout以十进制格式、十六进制格式和八进制格式输出整数。默认格式为十进制,修改格式之前,原来的格式一直有效。具体使用方式如下:

#include <iostream>

int main()
{
	int decDig = 42;
	int hexDig = 42;
	int octDig = 42;

	std::cout << "42以十进制显示是:" << decDig << std::endl;		//cout输出的默认格式是十进制
	std::cout << std::hex;											//控制符hex使cout以十六进制格式显示数字
	std::cout << "42以十六进制显示是:" << hexDig << std::endl;
	std::cout << std::oct;											//控制符oct使cout以八进制格式显示数字
	std::cout << "42以八进制显示是:" << octDig << std::endl;

	std::cin.get();
	return 0;
}

  放在数字常量后面的字母是后缀,用来表示该数字常量的类型。整数后面的l或者L表示该整数为long常量;u或者U表示该整数为unsigned int常量;ul(可以调换顺序,大小写均可)表示unsigned long常量;ll或者LL表示long long常量;ull(大小写均可)表示unsigned long long常量。

4.转义序列

转义序列

转义序列
  可以基于字符的八进制和十六进制编码来使用转义序列,例如ctrl+z的ASCII码为26,对应的八进制编码为032,十六进制编码为0x1a,将这些编码用单引号扩起可以得到相应的字符常量,如’\032’或者’\x1a’。

三、const限定符

  用const限定符创建常量时要进行初始化。

四、浮点数

  计算机把带小数部分的数字分成两部分存储,一部分表示值,另一部分对值进行放大或缩小,例如34.1215,可以把第一部分表示为0.341215(值),第二部分表示为100(缩放因子),缩放因子的作用是移动小数点的位置,浮点一词因此得名。C++有两种表示浮点数的方式,第一种是标准的表示法,例如12.34,8.0;第二种是E表示法,例如3.46E6,E6指的是10的6次方,即3.46乘以10的6次方,而3.46E-6则表示3.46乘以10的-6次方。
  利用cout输出浮点数时,cout会删除结尾的零,例如将3.233300显示为3.2333。

五、算数运算符

  1.%运算符求模,结果是第一个数除以第二个数的余数,两个操作数必须是整数,而且结果也是整数;
  2.浮点常量在默认情况下为double类型;
  3.类型转换,将一种类型的值赋给另一种类型的变量时,值将被转换为接受变量的类型,例如变量solong为long类型,变量thirty为short类型,语句solong = thirty,进行赋值时thirty的值扩展为long值,扩展后的新值被存储在solong中,而thirty的内容不变;数值转换存在的问题:

转换潜在的问题
将较大的浮点类型转换为较小的浮点类型,如将double转换为float精度(有效位数)降低,值可能超出目标类型的取值范围,在这种情况下,结果将是不确定的
将浮点类型转换为整型小数部分丢失,原来的值可能超出目标类型的取值范围,在这种情况下,结果将是不确定的
将较大的整型转换为较小的整型,如将long转换为short原来的值可能超出目标类型的取值范围,通常只复制右边的字节

  4.当运算涉及两种类型时,较小的类型将被转换为较大的类型;
  5.强制类型转换,例如有int类型的变量thorn,则可以使用以下两种转换方式:
   long(thorn); //typename(value)
   (long)thorn; //(typename)value
   还有一种更严格的强制类型转换运算符:
   static_cast<long>(thorn); //static_cast<typename>(value)
  6.关键字auto可以根据初始值的类型推断变量的类型。


总结

  以上就是本篇文章的全部内容,首先记录了C++中变量的命名规则,然后记录了有关整型的知识,包括各种整型类型、位与字节、climits头文件中的符号常量、整型溢出行为、头文件iostream提供的dec、hex和oct格式控制符、转义序列,接着记录浮点数和算术运算符,其中包括类型转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值