short、int、long以及long long这四种,占用内存越大的类型能表示的数值范围就更大。short类型至少占据2个字节,即16位;一般占用2字节;
int在现代系统中一般占用4个字节,即32位;类型长度大于等于short类型;
long类型长度至少占据4个字节,且大于等于int类型;一般占用4个字节;
long long类型长度至少占据8个字节,且大于等于long类型;一般占用8个字节。
计算机内存采用二进制的存储方式,每一个位可以表示0与1两种状态,因此占据 n n n位的内存块,可以表示 2 n 2^n 2n 个不同的数字。
int类型,可以表示
2
32
=
4294967296
2^{32} = 4294967296
232=4294967296个不同的整数。每个类型数据可以分别指定有符号版本和无符号版本,用来明确该类型是否需要表示负值。
unsigned int就表示无符号的int类型,只能表示正值;signed int就表示有符号的int类型,可以表示负值。如果是无符号版本,那么一个8位的内存块可以一一对应到0~255之间的整数;
如果是有符号版本,那么就会考虑负数,这个8位的内存块可以表示**-128~127**之间的整数。
short price = 500; // 单价
int coupon = -2000; // 优惠
long total = 48000; // 总价
一定要注意每种类型能表示的范围,例如
short total = 48000; // 总价
cout << "总价为:" << total << "元。\n";
总价为:-17536元。
这是由于short默认状态下是符号类型,占据16位内存,数据范围在-32768~32767之间,所以无法正确表示48000。
在确定变量的数值不会是负数的情况下, 我们可以利用unsigned关键字,加在原有数据类型之前,创建无符号的整数类型。
unsigned short bike = 6; // 单车数
unsigned int car = 58000; // 汽车数
unsigned long people = 16825000; // 总人数
char是另一种特殊的整数类型,它专门用来存储计算机中的基本符号:英文字母、数字以及标点等。char的变量中的实际上是一个整数,对应于这个字符的ASCII编码值。char类型的变量赋值。// 用字符常量初始化一个 char 类型
char size_1 = 'L';
// 用整数常量初始化一个 char 类型,字符L的ASCII编码值为76
char size_2 = 76;
long long整型表示float、double以及long double,分别表示不同的精度。float类型通常占用4个字节,有效位数为6位double类型占用的空间是float类型的两倍,即8个字节,有效位数为15位long double类型一般占用16个字节的空间float ratio = 0.618; // 黄金分割比例
double pi = 3.1415926; // 圆周率
long double atom = 1e80; // 宇宙中原子个数
printf()函数和scanf()函数进行格式化的输出输入。f(format)。include加载对应的头文件cstdio,并且使用标准命名空间std,完成格式化输入输出。#include <cstdio>
using namespace std;
printf(格式字符串, 待打印项1, 待打印项2, ...);
const float kPrice = 3.5; // 波波笔单价
int num = 6; // 波波笔数量
// 格式化字符串为 "波波笔的单价是:%f元,您购买了%d支。\n"
// 其中,%f的地方用kPrice填充,%d的地方用num填充
printf("波波笔的单价是:%f元,您购买了%d支。\n", kPrice, num);
波波笔的单价是:3.500000元,您购买了6支。
例如,"%+4.2f"表示打印一个浮点数,显示该浮点数的正负号,字段宽度为4个字符,其中小数点后有两位数字。

scanf(格式字符串, 地址项1, 地址项2, ...);
scanf()函数中的格式字符串用来表明字符输入的目标数据类型。printf()函数不同,scanf()函数中的地址项是变量对应的内存地址,用来装载对应的输入数据。获取地址的规则如下:
scanf()函数读取基本变量类型的值,在变量名前加上一个&;scanf()函数将字符串读到字符数组中,则不要使用&,关于字符数组的使用将在之后的内容中进行讲解。const float kPrice = 3.5; // 波波笔单价
int num; // 波波笔数量
printf("请输入您购买波波笔的数量:\n");
// 输入数量num,%d表示是整数
scanf("%d", &num);
printf("波波笔的单价是:%4.2f元,您购买了%2d支。\n", kPrice, num);
请输入您购买波波笔的数量:
请输入您购买波波笔的数量:
12
波波笔的单价是:3.50元,您购买了12支。

#include<iostream>
using namespace std;
以下讨论C++编程中最基本的标准输入输出操作,即使用cin和cout对系统指定的标准设备的输入和输出
cout << 输出内容1 << 输出内容2 <<...;
cout不是C++预定义的关键字,而是在iostream中定义的一个容纳数据的载体。"<<"在C++中的iostream头文件中进行了重新定义,重载为具有输出功能的符号,称为插入运算符,能够识别C++中所有的基本类型。<<在C++中是被定义为左位移运算符。但这里在iostream头文件中对它进行了重新定义为插入运算符。<<运算符进行组合,在单个输出语句中打印不同的变量,字符串等。运算符的组合不引入额外的输出内容。const float kPrice = 3.5; // 波波笔单价
int num = 6; // 波波笔数量
cout << "波波笔的单价是:" << kPrice << "元,";
cout << "您购买了" << num << "支。\n";
波波笔的单价是:3.5元,您购买了6支。
iostream中定义的cin,用来将标准输入转化为字节流。使用格式为:cin >> 内存存储单元1 >> 内存存储单元2 >> ...;
const float kPrice = 3.5; // 波波笔单价
int num; // 波波笔数量
cout << "请输入您购买波波笔的数量:" << endl;
cin >> num;
iostream将符号">>"重载为具有输入功能的符号,称为抽取运算符,能够识别C++中的字符型、整型以及浮点型数据类型。float sqaure_price; // 每平方单价
float total_price; // 房屋总价
cout << "请输入房屋每平方单价与房屋总价:" << endl;
cin >> sqaure_price >> total_price;
我们运行程序后根据提示信息,依次输入输入房屋每平方单价与房屋总价,之间以回车键进行分隔。
请输入房屋每平方单价与房屋总价:
5.5e4
7650000
C++中的基本算术运算分为如下5种:加法(+)和减法(-),乘法(*)和除法(\)以及求模(%)
C++中,"="被称作赋值运算符,代表把表达式的值赋给变量的操作
()圆括号对来明确计算的顺序,在()中的表达式具有最高的计算优先级。++其实也是一种运算符,称为自增运算符
++运算符只能作用在变量操作数上,可以使该变量的值在原来基础上递增1++coffee和后缀模式milk++int coffee_box;
int milk_box;
int coffee = 0;
int milk = 0;
coffee_box = ++coffee; //前缀模式
milk_box = milk++; //后缀模式
printf("coffee_box = %d, coffee = %d. \n", coffee_box, coffee);
printf("milk_box = %d, milk = %d. \n", milk_box, milk);
coffee_box = 1, coffee = 1.
milk_box = 0, milk = 1.
--
0或1两种状态中的一种char的常量7大小为1个字节
8位二进制数:0000 0111int的常量7大小为4个字节
32位二进制数:0000 0000 0000 0000 0000 0000 0000 0111C++中共包含6种按位运算符:
&|^~<<>>按位运算符只能对字符整型以及数值整型数据类型的常量或变量使用,不能对浮点类型数据进行计算。

int A = 60; // 0011 1100
int B = 13; // 0000 1101
cout << "A & B = " << (A & B) << endl;
A & B = 0000 1100
A & B = 12

int A = 60; // 0011 1100
int B = 13; // 0000 1101
cout << "A | B = " << (A | B) << endl;
A | B = 0011 1101
A | B = 61

int A = 60; // 0011 1100
int B = 13; // 0000 1101
cout << "A ^ B = " << (A ^ B) << endl;
A ^ B = 0011 0001
A ^ B = 49
二进制位取反规则是0变1,1变0。
int A = 60; // 0011 1100
cout << "~A = " << (~A) << endl;
~A = 1100 0011
0011 1100,补码同样等于0011 1100。~A的原码为1100 0011,补码等于1011 1100 + 1 = 1011 1101,值为-61,故~A = -61。~A = -61
个对操作数取反运算的简单规律是:会得到比原先操作数的相反数还小1的结果。
<<可以将一个操作数的各二进制位全部左移若干位。
0int A = 60; // 0011 1100
cout << "A << 1 = " << (A << 1) << endl;
A << 1 = 0111 1000
A << 1 = 120
在结果符号位不改变,并且没有超过表示范围的情况下,左移运算符移动了几位,相当于对原操作数进行了几次乘2运算。
00,负数为1int A = 60; // 0011 1100
cout << "A >> 2 = " << (A >> 2) << endl;
A >> 2 = 0000 1111
A >> 2 = 15