1-简单信息的表示和基本运算

计算机中的数据类型

◦ 不同的表示形式
◦ 不同的存储空间
◦ 不同的运算

整数

关于不同类型的数所占的字节数
 C++没有规定不同类型的数占的字节数
 会因计算机系统、编译器的不同而不同
 sizeof()运算符测试某类型数所占字节数

1
2
3
cout<<sizeof(int)<<endl;//整型数的字节数
cout<<sizeof(short int)<<endl;
cout<<sizeof(short)<<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

C++的位运算

特殊运算符

 赋值运算 =
◦ 起赋值作用
◦ 等于右边表达式的值
◦ 左边必须是变量
 字节数运算符: 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)

转义符

一些 ASCII 字符