位 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