其二,处理数据

本文深入解析C++中的各种数据类型,包括整型、字符型、布尔型及浮点数的特性和使用方法,同时探讨了不同类型的内存占用、数值范围以及基本运算规则,适合初学者和进阶开发者阅读。

位 bit 与 字节 byte/B

在内存中1位可以表示0和1,而1字节表示8位内存单元,因此1 byte = 8 bits = 256 种数值组合.

#include<iostream>
#include<climits>
int main() {
	using namespace std;
	int nInt = INT_MAX;
	short nShort = SHRT_MAX;
	long nLong = LONG_MAX;
	long long nLLong = LLONG_MAX;

	cout << "int is " << sizeof(int) << " bytes." << endl;
	cout << "short is " << sizeof nShort << " bytes," << endl;
	cout << "long is " << sizeof(nLong) << " bytes." << endl;
	cout << "long long is " << sizeof nLLong << " bytes." << endl;
	cout << endl;

	cout << "Maximum values:" << endl;
	cout << "int: " << nInt << endl;
	cout << "short: " << nShort << endl;
	cout << "long:" << nLong << endl;
	cout << "long long: " << nLLong << endl << endl;

	cout << "Minimum short values = " << SHRT_MIN << endl;
	cout << "Bits per byte = " << CHAR_BIT << endl;

	cin.get();
	return 0;
}
/*
sizeof给出的是字节长度,类型名必须放在括号中,变量名则随意
INT_MAX属于C++符号常量,在定义变量名时应避免与之相同
*/

在这四种类型前添加 unsigned 可使之只储存非负值,unsigned short 表示从0-65535的值,而unsigned即是unsigned int的缩写。

char

char用以储存字符和小整数,可以将其看作比short更小的整型。

int main() {
	using namespace std;
	char ch = 'M';
	int i = ch;
	cout << "The ASCII code for " << ch << " is " << i << endl;

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

	cout << "Displaying char ch using cout.put(ch):";
	cout.put(ch);
	cout.put('!');
	cout << "\n" << "Done" << endl;
	cout << "\a";				//系统振铃
	cin.get();
	return 0;
}
/*
'M'表示M的ASCII数值编码,'!'同理
cin与cout在输入会自动转换ASCII码给系统,输出时再将ASCII码转换为字符
转换后的ASCII码视为整数,因而能够进行运算
cout.put()是调用iostream类中cout对象里的put函数
早期C++与C一样将字符存储为int类型,而cout并不能识别,因此有了该函数,
现在C++将字符存储于char则不需要。
endl 可用'\n' "\n" 代替
*/

bool型

C++中 true false 可以提升转换为 1 / 0 ,同时任何数字值和指针值都可以隐式转换为bool,0 为 false,非 0 为 true 

浮点数

对于计算机而言,小数储存分为 数值 与 小数点控制 即数与缩放因子 两部分,浮点数可以表示小数值,非常大和非常小的值。

+5.01E+6 分为两部分,5.01表示数,E+6表示乘以10的6次方,也可写为5.01e6。

数的正负只代表数的正负,不影响E的缩放。

int main() {
	using namespace std;
	cout.setf(ios_base::fixed, ios_base::floatfield);//cout会省略不必要的0,而这个函数会覆盖使之不省略
	float tub = 10.0 / 3.0;
	double mint = 10.0 / 3.0;
	const float million = 1.0e6;

	float a = 1.19e22;
	float b = a + 1.0;
	cout << "a = " << a << endl;
	cout << b - a<<endl;

	cout << "tub = " << tub;
	cout << ", a million tubs = " << million * tub << endl;
	cout << "and ten million tubs = ";
	cout << 10 * million*tub << endl;

	cout << "mint = " << mint << " and a million mints = ";
	cout << million * mint << endl;
	cin.get();
	return 0;
}

float只保证6位有效,double只保证15位有效,因此浮点运算不能用于快速,精确的计算。

C++运算符

%求模只能用于整数型,不能用于浮点运算,若存在负数,则结果符号满足

(a/b)*b+a%b=a

 

转载于:https://my.oschina.net/Almon/blog/3034382

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值