C++初学(3)

面向对象编程(OOP)的本质是设计并拓展自己的数据类型,设计自己的数据类型就是让类型与数据匹配。内置的C++类型分为两组:基本类型和复合类型。这里我们将介绍基本类型的整数和浮点数

3.1、简单变量

3.1.1、变量名

C++必须遵循几种简单的C++命名规则:

(1).在名称中只能使用字母字符、数字和下划线(_)。

(2)名称的第一个字符不能是数字。

(3)区分大小写字符。

(4)不能将C++关键字用作名称。

(5)以两个下划线大头或以下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。

(6)C++对于名称的长度没有限制,名称中所有字符都有意义,但有些平台有长度限制。

如果想用两个或多个单词组成一个名称,通常的做法是用下划线字符将单词分开,如my_yuanshi;或者第二个单词开始将每个单词的第一个字母大写,如myAccountNumber。

3.1.2、整型

整数就是没有小数部分的数字。整数有很多,目前不可能用有限的计算机内存来表示所有整数。因此语言只能表示所有整数的一个子集。而C++则提供好几种,便能根据实际要求选择最合适的整数。

不同C++整型使用不同的内存量来存储整数。使用的内存量越大,可以表示的整数值范围也越大。有的类型(符号类型)可表示正值和负值,而有的类型(无符号类型)不能表示负值。C++的基本整型分别是char、short、int、long、和long long。(按照存储整数时使用的内存量进行递增排序)。

3.1.3、整型short、int、long和long long

下面介绍一下位与字节(重要!)

计算机内存的基本单元是位(bit)。可以将bit看作电子开关,可以开,可以关。关表示值为0,开表示值为1。因为每一位都可以有两种设置,所以8位的总组合为2^8,即256。

字节(byte)通常指的是8位的内存单元,它指的是描述计算机内存量的度量单位,1KB等于1024字节,1MB等于1024KB。

C++提供了一种灵活的标准,它确保了最小长度,如下所示:

(1)short至少16位。

(2)int 至少与short一样长。

(3)long至少32位,且至少与int一样长。

(4)long long至少64位,且至少与long一样长。

这4种类型都是符号类型,负值和正值几乎相同。例如16位的int取值范围为-32768~+32767。要想知道系统中整数的最大长度,可以在程序钟使用C++工具来检查类型的长度。sizeof运算符返回类型或变量的长度,单位为字节(运算符是内置的语言元素,对一个或多个数据进行运算,并生成一个值)。

头文件climits中包含了整型限制的信息。如下代码进行演示:

#include <iostream>
#include <climits>
int main()
{
	using namespace std;
	int n_int = INT_MAX;
	short n_short = SHRT_MAX;
	long n_long = LONG_MAX;
	long long n_llong = LLONG_MAX;

	cout << "int is " << sizeof(int) <<" bytes." << endl;
	cout << "short is " << sizeof n_short << " bytes." << endl;
	cout << "long is " << sizeof n_long << " bytes." << endl;
	cout << "long long is " << sizeof n_llong << " bytes." << endl;
	cout <<  endl;

	cout << "Maximum values:" << endl;
	cout << "int:" << n_int << endl;
	cout << "short:" << n_short << endl;
	cout << "long:" << n_long<< endl;
	cout << "long long:" << n_llong << endl<<endl;

	cout << "Minimum int value =" << INT_MIN << endl;
	cout << "Bits per type=" << CHAR_BIT << endl;
	return 0;
}

3.1.3.1、运算符sizeof和头文件limits

sizeof运算符指出,int的长度为4个字节。可对类型名或变量名使用sizeof运算符。

头文件climits定义了符号常量来表示类型的限制。可以到这里看详细的定义:climts中的符号常量

climits文件中包含与下面相似的语句行:

#define INT_MAX 32767

#define和#include一样,也是一个预处理器编译指令。该编译指令告诉预处理器:在程序中寻找INT_MAX,并将所有INT_MAX都替换为32767。预处理器寻找独立的标记,并不会将单词里含有INT_MAX给替换。所以#define可以用来定义自己的符号常量。C++有一种更好的创建符号常量的方法(使用关键字const,在后面进行讨论)。

3.1.3.2、初始化

初始化将赋值与声明合并在一起。例如下面,将int的最大取值赋值给n_int。

int n_int=INT_MAX;

也可以使用字面值常量来初始化,或者用已定义过的变量来初始化,甚至可以使用表达式来初始化。

注:如果不对函数内部定义的变量进行初始化,该变量的值将是不确定的。

3.1.3.3、C++11初始化方式

用大括号初始化器用于单值变量。用这个方法可以省略等号,并且大括号内不用包含东西(默认初始化为0)。

int yuanshi={1600};
int yuanshi{7};
int mola{};

3.1.4、无符号类型

如果short表示的范围为-32768~+32767,则无符号版本的表示范围为0~65536。当且仅当数值不为负才应使用。要创建无符号版本的基本类型,只需要使用关键字unsigned来修饰声明即可。

#include <iostream>
#define ZERO 0
#include <climits>
int main()
{
	using namespace std;
	short sam = SHRT_MAX;
	unsigned short sue = sam;
	cout << "Sam has " << sam << " dollars and Sue has " << sue;
	cout << " dollars deposited." << endl
	      << "Add $1 to each account." << endl << "Now";
	sam += 1;
	sue += 1;
	cout << "Sam has " << sam << " dollars and Sue has " << sue;
	cout << " dollars deposited.\nPoor Sam!" << endl;
	sam = ZERO;
	sue = ZERO;
	cout << "Sam has " << sam << " doolars and Sue has " << sue;
	cout << " doolars deposited." << endl;
	cout << "Take $1 from each account." << endl << "Now ";
	sam += 1;
	sue -= 1;
	cout << "Sam has " << sam << " dollars and Sue has " << sue;
	cout << " dollars deposited." << endl << "Lucky Sue!" << endl;
	return 0;
}

这些整型变量的行为就像里程表。如果超越了限制,其值将为范围另一端的取值。

3.1.5、选择整型类型

(1)一般没有特殊要求选择int。

(2)如果变量的值不为负,选择unsigned。

(3)如果知道变量可能表示的整数值大于16位整数的最大可能值,则使用long;如果超过20亿,则采用long long。

(4)需要节省空间,且通常仅当有大型整型数组时用short。

3.1.6、整型字面值

整型字面值(常量)是显示地书写的常量。C++使用前一(两)位来标识数字常量的基数。

(1)第一位为1~9,则为十进制。

(2)第一位是0,且第二位1~7,则为八进制。

(3)如果前两位是0x或0X,则为十六进制。

注:默认情况下,cout以十进制格式表示整数。可以用下面代码转化cout显示方式。

cout<<dec;//十进制
cout<<hex;//十六进制
cout<<oct;//八进制

3.1.7、char类型:字符和小整数

char类型是专为存储字符而设计的。常用ASCLL码表

#include <iostream>
int main()
{
	using namespace std;
	char ch = 'M';
	int i = ch;
	cout << "The ASCLL code for " << ch << " is " << i <<endl;

	cout << "Add one to the character code:" << endl;
	ch += 1;
	i = ch;
	cout << "The ASCLL code for " << ch << " is " << i << endl;

	cout << "Display char ch using cout.put(ch):";
	cout.put(ch);
	cout << endl << "Done!" << endl;
	return 0;
}

3.1.7.1、程序说明

ch为字符“M”,而i为“M”的ASCLL码值“77”。ch加一改变其ASCLL值,表示为“N”。

3.1.7.2、成员函数cout.put()

函数cout.put()是一个重要的C++OOP概念——成员函数——的第一个例子。成员函数归类所有,描述了操纵类的特定对象(例如这里的cout对象)来使用成员函数。必须用句点将对象名和函数名称(put())连接起来。句点称为成员运算符。它提供了另一种显示字符的方法,可以替代<<运算符。

3.1.7.3、signed char 和unsigned char

char在默认的情况下既不是没有符号,也不是有符号。是否有符号由C++决定。unsigned char类型的表示范围通常为0~255,而signed char的表示范围为-128~+127。

3.1.7.4、wchar_t

需要处理的字符集可能无法用一个8位字节表示,可以将char定义为一个16位的字节或更大的字节。iostream文件的wcin和wcout可用于处理wchar_t流。

3.1.8、bool类型

布尔变量可以是ture或false。C++将非零值解释为true,将零值解释为false。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值