基础变量类型

表示整数,小数,字符,逻辑的变量

  • int 整数
  • long long 长整数
  • double 双精度浮点数
  • char 字符
  • bool 布尔值

常用类型

不常用的类型

  • short int 短整数
  • unsigned int 无符号整数
  • float 单精度浮点数

电脑中的数据都是以二进制的形式存储的

1位二进制能表示0,1

2位二进制能表示00,01,10,11四个数字

3位二进制能表示

  0      1      2       3       4      5      6       7 

000  001  010  011  100  101  110  111

二进制

n位二进制能表示          个数

2^{\text{n}}
2^{\text{1}} =2
2^{\text{2}} =4
3^{\text{2}} =8

int变量32位的内存,也就是32位二进制数

int的范围

也就是                                              个数字

2^{32} = 4294967296

4294967296/2 = 2147483648

其中一半表示负数           一半表示非负数

-2147483648 ~ -1           0~2147483647

0~5是几个数字?

int 整数

属性 描述
所占空间 4字节 4字节=32位
最大值  2147483647 21亿
最小值 -2147483648 -21亿

特点:

  • 只能存整数,如int a=3.99; 这时a里会存3,不会四舍五入
  • 超过最大值会溢出,低于最小值也会溢出
  • 整数除整数时,结果是整除的结果
  • 整数才能用%取余,小数不行

8位(bit,b,比特)组成一个字节(Byte,B)

只能存整数

int a=3.99;
cout<<a<<endl;//输出的是3

cout<<int(3.14);//int()表示强制类型转换

溢出问题

int a=2147483647;
a=a+1;
cout<<a;//输出什么?
int a=100000;//10万
int b=100000;//10万
cout<<a*b;//输出什么?

乘法也会溢出

整除问题

int a=5;
cout<<a/2;//结果是整除的结果
cout<<5.0/2<<endl;//输出2.5 不是整除
int a=5.0/2;//只能存证书,舍去小数
cout<<a<<endl;//输出2
cout<<int(5.0/2);//利用int()得到整除的结果

需要整除结果时

接下来请完成《[整除]找钱》题目

取余,获得余数

int a=5;
cout<<a%2<<endl;//结果1
cout<<4%2<<endl;//结果是?
int stu=45;
cout<<stu%10;

通过取余解决问题-一个班有45个人,10人一组,剩几个?

接下来请完成《[取余]分组剩余》题目

long long 长整数

属性 描述
所占空间 8字节 8字节=64位
最大值  9223372036854775807 19位数
最小值 -9223372036854775808 19位数

long long是long long int的简写

与int差别:

  • 占的空间比int大
  • 存储范围比int大
  • 也会溢出,也会整除,也能取余

接下来请完成《沙海》

double 双精度浮点数

属性 描述
所占空间 8字节 8字节=64位
最大值 1.79769e308 科学计数法,表示1.79769乘10的308次方,300多位数
最小值 2.22507e-308 0.000......000222507
此处省略300多个0
精度 15,16位 精度不够,不能准确表示

关于精度:用double存3.12345678901234567890时,存的后几位小数就会出现偏差

存的实际上是3.12345678901234569125

double 保留小数问题

printf输出,保留几位小数

double a=3.12345678901234567890;
cout<<a;//输出3.12346 默认六位有效数字
double a=3.12345678901234567890;
printf("%.20f",a);//小数点后20位小数
//3.12345678901234569125

printf 保留小数

printf输出,保留几位小数

printf("%.2f",3.555);//四舍五入保留2位小数
printf("%.3f",3.7777);//输出什么?
printf("%.2f",9.999);

保留几位

要输出的小数

当四舍五入遇到进位,会输出什么呢?

自己写一写,试一试吧

cout是C++的输出,printf是C语言的输出,不能混用

printf 保留小数

printf输出,保留几位小数

printf("%.2f",9.999);

保留几位

要输出的小数

printf("%.2f",1);//输出0.00
//因为1不是小数

接下来请完成《计程车》

double的除法

cout<<5/2<<endl;  //输出2
cout<<5.0/2<<endl;//输出2.5

double a=5/2;
cout<<a<<endl;//输出什么?
double b=5;
cout<<b/2<<endl;  //输出什么?
cout<<b+5/2<<endl;//输出什么?

第一题

第二题

double b=2;
cout<<5/2*b<<endl;  //输出什么?

第三题

char 字符

字符是用来表示符号,字母,数字符号等的变量类型,

存储的是'*','a','z','0','\n'等符号

计算机中只能存储2进制数字,无法直接存符号,所以符号,字母等字符都是以编码存储的,就是用数字代表字符

  • 最常用的编码叫做ASCII码,只能存英文符号,字母等,只占1字节,所以最多只能表示256个字符
  • 汉字是用另一种编码存储的,叫GB2312,占2个字节

ASCII码表

记住 '0'   'A'   'a' 的ASCII码

注意运算类型

char a='A';
cout<<a+1<<endl;//输出66
//相当于65+1
cout<<char(a+1);//输出'B'
  • char运算时先转换成对应ASCII码,再计算
char a='B';
a=a+32;
cout<<a;
  • 想一想如何进行大小写转换
cout<<'1'+1<<endl;
char a='1';
cout<<(a-'0')+1;//减去'0'得到真正数字
  • 注意区分数字和数字字符,一加一在什么情况下等于50

接下来请完成《凯撒密码加密》

bool 布尔类型

bool类型是用来存储 “正确”,“错误” 这两种值的

bool a=true; //正确
bool b=false;//错误
bool c=2>1;  //正确
bool d=5<1;  //错误
cout<<a<<" "<<c<<endl;//true 在输出时会输出1
cout<<b<<" "<<d<<endl;//false在输出时会输出0

//下面的代码输出什么
cout<<(4>5)<<endl;//直接输出判断时要加括号
cout<<(3>=3)<<endl;
cout<<(3==3)<<endl;

非零即一问题

bool只有两种结果,要么对,要么错,没有第三种情况

bool a=1;
cout<<a<<endl;//输出1
bool b=0;
cout<<b<<endl;//输出0
bool c=2;
cout<<c<<endl;//输出什么?

2不是0,就代表“正确”,所以c里面存的是true,所以输出1

cout<<bool(999)<<endl;//输出?
cout<<bool(-1)<<endl;//输出?
cout<<bool(-2)<<endl;//输出?
cout<<bool(0)<<endl;//输出?

接下来请完成《大小比较》

全屏模式(F)
演讲者模式(S)
预览模式(O)
黑板模式(B)
当页绘画(C)