1-简单信息的表示和基本运算
计算机中的数据类型
◦ 不同的表示形式
◦ 不同的存储空间
◦ 不同的运算
整数
关于不同类型的数所占的字节数
C++没有规定不同类型的数占的字节数
会因计算机系统、编译器的不同而不同
sizeof()运算符测试某类型数所占字节数
1 | cout<<sizeof(int)<<endl;//整型数的字节数 |
方括号表示可选,如unsigned [int],表示
◦ 使用 unsigned int 也可以
◦ 使用 unsigned 也可以
实数
IEEE754标准
◦ 单精度、双精度
单精度(类型名:float)
◦ 4字节,±3.4×10 -38 ~ ± 3.4×10 38 ,单精度浮点
双精度(类型型名:double)
◦ 8字节, ± 1.8×10 -308 ~ ± 1.8×10 308 ,双精度浮点
字符
字符型(char)
◦ 单个字符的表示,
◦ 将字母写在一对单引号中表示字符,如:
◦ ‘A’, ‘B’, ‘C’ ,‘a’, ‘b’, ‘c’,‘0’, ‘1’, ‘2’, ‘3’,‘#’, ‘$’, ‘%’
◦ 每个字符占一个字节,保存英文字符的ASCII码。
◦ 注意
◦ 'a’和a是不一样的
◦ ‘0’和0是有本质区别的
◦ ‘0’,是字符,1字节,存ASCII码48,二进制0011 0000
◦ 0, 是整数,4字节,存的是0, 二进制0000…0(32个0)
◦ 可以参与整型数能进行的运算,如’a’+1
字符串型
连续的多个字符
字符串写在一对双引号之间,如
◦ “Hello World”
◦ “程序设计”
字符串占的字节数等于字符串长度+1
◦ “Hello World”,长度11(10个字母+1个空格),占12字节
◦ “程序设计”,长度8(4个汉字8字节),占9个字节
为什么+1?
末尾加了一个结束符,用’\0’表示,数值上是0
逻辑型
表示“真”,“假”这样判断的结果
取值:
true,表示"真"
false,表示"假"
存储
◦ true,存的是1
◦ false,存的是0
非0数值,当逻辑值相当于true
数值0,当逻辑值相当于fasle
逻辑型数存放的实际也是整数,可以进行数学运算
转义字符
有些 ASCII 符号是不可显示的,如换行符、回车符、退格符、水平制表符等
有些是有的特殊意义的
比如单引号、双引号、反斜杠等
用一个反斜杠和一个字母(或数字)表示,它也是1个字符,如
\n 表示换行符 \r 表示回车
\b 表示退格 \t 表示水平制表符
' 表示单引号 " 表示双引号 \0
比如
cout<<‘'’; //显示单引号
cout<<‘"’; //显示双引号
常量和变量
常量:
具体把数据写出来
2,3,4; 1.2,1.3; “Hello world!”,“C++”
cout<<2015;
常量:不能改变的量
字面常量(字面量、直接常量):直接写出的数据。
符号常量:用符号表示数据,但它一旦确定了表示
哪个数据,以后就不再改变。
符号常量:
- 说明一个符号表示常量
◦ const <类型说明符> <符号常量名> =<数据>; - 在main函数前 (不推荐)
◦ #define <符号名称> <数据>
变量使用中要注意的问题
1.先定义,再使用
2.只能定义一次,不能重复定义
3.先赋值,再参与计算
4.变量可以多次赋值,而常量是不能赋值的
5.变量的定义可以出现在使用前的任何地方,但建
议在程序的开始定义变量
6.尽可能使用符号常量和变量, 少用或不用字面常量
算术运算和自增自减运算
算术运算符
◦ +, -, *, /, %;没有乘方运算
自增自减运算
优先级
◦ 先乘除、求余; 后加减
运算的数据类型
◦ 整型和整型运算结果是整型(下取整)
强制类型转换
◦ 在变量或表达式前写 (<类型>)
逻辑运算中
当逻辑值看待时,非0——true;0——false
特殊运算符
赋值运算 =
◦ 起赋值作用
◦ 等于右边表达式的值
◦ 左边必须是变量
字节数运算符: sizeof(<表达式、类型>)
逗号: <表达式1>,<表达式2>,…,<表达式n>
y=( <表达式1>,<表达式2>,…,<表达式n> )
条件运算符
◦ y=(<条件> ?<表达式1> :<表达式2>)
逗号运算符
逗号","是一个运算符
多个表达式用逗号隔开,构成逗号表达式
格式
<表达式1> , <表达式2> , … , , <表达式n>
作用
从左向右依次计算n个表达式的值
整个表达式的值为<表达式n>的值
逗号运算符举例
int a=1,b=2,c=3;
int y;
y=(a=a+1,b=b+2,c=c+3);
13
相当于
a=a+1;
b=b+2;
c=c+3;
y=c;
可以看出逗号表达式不直观, 不推荐使用, 还是拆开写靠谱
混合运算的类型转换
(1)相同类型的数据运算,结果的类型不变
(2)不同类型的数据运算,自动向精度高的类型转换
(3)赋值运算,向左值类型转换
(4)强制类型转换
◦ ( <类型> ) 变量或常量
◦ <类型> ( <表达式> )
(5)精度高向精度低的类型转换,会损失精度
(6) 整型相除,结果为整型, 小数会被舍去。
算术转换-转换方式
◦ 字节少的向字节多的转换
char, unsigned char,short,unsigned short ,bool → int
cout<<(‘a’+5)<<endl;//'a’转换为int再加5,结果为整型
◦ 精度低的向精度高的转换
int →float →double
cout<<(5+3.5)<<endl; // 5转换为double型再相加
◦ 有符号向无符号转换 // 结果为 double
int → unsigned int
unsigned int ui=32678;
cout<<(5+ui)<<endl; //5转换为unsigned int
隐式转换时机
混合类型的表达式
int n=2;
char c=‘a’;
cout<<(c+n)<<endl; //'a’的ASCII为97,加2得整型99
赋值
◦ 向左值类型转换
doube a=8.12;
int k;
k=a;//a转换为int,舍去小数,k为8
5
在需要关系、逻辑表达式的地方
非0转true;0转false
字符和整数
整数和字符在内存中都是整数。
整数,存放数的二进制形式,字符, 存放其 ASCII 码值
输出时,当整数看待,显示数的十进制形式,
当字符看待,显示的是 ASCII 值是这个数的字符 (该数<128)