第2章 数据类型,运算符与表达式

总结

一.数据类型

数据类型
signed
unsigned
字符型
char 8bit=1Byte -128 – 127
unsigned char 0 – 255
整型
short 2Byte -32768 – 32767
unsigend short 0 – 65535
int 4B -2147483648 – 2147483647
unsigned int 0 – 4294967295
long == int
unsigend long == unsigend int
long long 8B
printf(“short:%d\n”, sizeof(short));
printf(“long long:%d\n”, sizeof(long long));
printf(“long double:%d\n”, sizeof(long double));

浮点型(没有unsigned)
float 4B
double 8B
long double 8B

枚举类型
如果一个数据只有几种为数不多的可能取值
enum DERECTION { EAST = 1, SOUTH = 0, WEST, NORTH };

typedef
为已有的类型起个新的名字,因为已有类型名太长或为了方便移植。
unsigned int u;
1.用已有变量名定义一个变量
unsigned int u;
2.将变量名换成新的类型名
unsigned int UINT;
3.在最前边加typedef
typedef unsigned int UINT;
4.可以用新的类型名定义变量了
UINT u;

typedef int ARRAY[10];
ARRAY a;
二.常量与变量
(一)常量
1.直接常量(字面常量)
例:整型:123 浮点型:123.456
字符串:“hello” 字符:‘a’
枚举:WEST
2.符号常量
例:#define PI 3.1415926
3.常量
例:const int i=10;
Int a[常量或常量表达式]
Int a[i] //cpp ok i是常量
Int a[i] //c ok i是只读变量
(二)变量
定义变量:类型名 变量名(标识符)
变量名的规定:1.只能由数字,字母或下划线构成,首字母不能是数字。
2.严格区分字母大小写。
3.不能与关键字冲突。
4.应该做到见名知义。
关键字
在代码中承担特殊语法含义的字符序列32个
代码质量:正确性,可靠性,可读性,性能
三.整型数据
整型数据在计算机内的存储方式:
原码、反码、补码
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用 0 表示“正”,用 1 表示“负”,而数值位,三种表示方法各不相同。
原码:直接将二进制按照正负数的形式翻译成二进制就可以。
反码:将原码的符号位不变,其他位依次按位取反就可以得到了。
补码:反码+1 就得到补码。
正数的原、反、补码都相同。
对于整形来说:数据存放内存中其实存放的是补码。
为什么呢?
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU 只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

纸幸:
四.浮点型数据
一个浮点型数据一般在内存中占四个字节(32位)。浮点型数据是按照整数方式存储的。系统会把一个浮点型数据分成小数部分和指数部分,分别存放。

纸幸:

1

五.字符型数据
转义字符表:

字符常量是一对单撇号括起来的单个字符,字符串常量是一对双撇号括起来的字符序列。
六.变量赋初值
程序中需要对一些变量赋初值,
例:int a=3; //指定a为整型变量,初值为3;
float f=3.1415 ; //指定f为浮点型变量,初值为3.1415;
char c=‘a’; //指定c为字符变量,初值为‘a’;
对指定变量赋初值:int a,b,c=1;
等价于:int a,b,c; c=1;
对所有变量有相同的初值:int a=1,b=1,c=1;
但不能写成 int a=b=c=1;
七.各数值型数据间的混合运算

double ← float

long

unsigned

int ← char, short

图中横向向左的箭头表示必定的转换,如字符数据必定先转换为整数, short型转为int型,float型数据在运算时一律转换成双精度型,以提高运算精度
纵向的箭头表示当运算对象为不同类型时转换的方向。例如int型与doub1e型 数据进行运算,先将int型的数据转换成图double型,然后在两个同类型(double型)数据进行运算, 结果为double型。注意箭头方向只表示数据类型级别的高低,由低向高转换,不要理解为int型先 转成unsigned型,再转成1ong型,再转成double型。如果一个Int型数据与一个double型数据运算, 是直接将int型转成double型。同理,一个int型与一个Long型数据运算,先将int型转换成1ong型。
换言之,如果有一个数据是float型或double型,则另一数据要先转 为double型,结果为double型。如果二个数据中最高级别为1ong型,则另一数据先转为1ong型,结果 为1ong型。其它依此类推。

不同类型数据的混合运算
1.0 / 5; //‘c’
double int //char
不同类型间的数据不能混合运算,要运算必须类型相同(转换)。
转化原则 : 低精度,低取值范围-- > 高精度,高取值范围
1.0 / (double)5; 显式 1.0 / 5; 隐式

八.算术运算符和算术表达式
运算符的三个属性:优先级,结合方向,操作数个数(数目)
*c的算术运算符

(1)算术运算符 (+ - * / %)
(2)关系运算符 (> < == >= <= !=)
(3)逻辑运算符 (! && ||)
(4)位运算符 (<< >> ~ | ∧ &)
(5)赋值运算符 (=及其扩展赋值运算符)
(6)条件运算符 (?:)
(7)逗号运算符 (,)
(8)指针运算符 (*和&)
(9)求字节数运算符(sizeof)
(10)强制类型转换运算符( (类型) )
(11)分量运算符(.->)
(12)下标运算符([ ])

(13)其他 (如函数调用运算符)

一个表达式中出现多个运算符,由优先级决定运算顺序。
一个表达式中出现多个同优先级运算符,由结合方向决定运算顺序。
目数决定运算符需要几个数才能完成运算。
单目运算符
算数运算符
移位运算符
关系运算符
逻辑运算符
三目运算符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值