第二章 数据类型、运算符和表达式

一个字节表示整数,范围为-128~127 2的8次方

两个字节表示整数,范围为-32768~32767 2的16次方

一般用四个字节表示整数 2的64次方

01表示的二进制中,正数的第一个是0,负数的第一个是1,补码取反

 

常量:程序运行过程中,值一直保持不变的量。编译器只根据其表面形式来判断其类型

变量:程序运行过程中,值可以改变的量。变量在程序执行中能够赋值,发生变化,在使用之前就要说明变量类型。一旦说明,就在程序中占据与类型相对应的存储单元

int num,total;//定义变量,在内存中开辟区间

num = 10;//变量赋值,10为常量

total = num * PRICE;

 

变量名的命名方法:

变量名、数组名、函数名…统称为标识符,标识符只能由字母、数字、下划线这三种字符组成,且第一个字符必须是字母或下划线,长度不大于247个字符,大小写不通用

关键字不能作为标识符,关键字是VC++语法要求中使用的字,如int if while 等

一般变量都是匈牙利命名法命名的:变量名=属性+类型+对象描述,如nCount chChoice

属性部分:g_ 全局变量    c_ 常量   m_ c++类成员变量    s_ 静态变量

类型部分:数组 a   指针p 函数fn  无效v 句柄长整型l 布尔b 浮点型(有时也指文件)f 双字dw  字符串sz  短整型 n   双精度浮点d

计数c(通常用cnt)符ch(通常用c)整型i(通常用n)字节by  字w 实型r  无符号u

描述部分:最大Max 最小Min 初始化Init 临时变量T(或Temp)源对象Src 目的对象Dest

 

整型常量:

1.十进制

2.八进制 以0开头

3.十六进制 以0x开头

 

整型常量也有长短之分,常量中无unsigned型,但一个非负的整型常量可以赋给unsigned型的变量

若一个常量定义为长整型数,在后加I或L区分,如32I 32L,内存分配四个字节存储

 

整型变量:分为有符号型与无符号型

有符号型:

short 2个字节,范围是-2^15~2^15-1

Int 4个字节,范围是-2^31~2^31-1

long 4个字节,范围是-2^31~2^31-1

 

无符号型:最高位不表示符号位

unsigned short 2个字节,范围是0到2^16-1

unsigned  int 4个字节,范围是0到2^32-1

unsigned long 4个字节,范围是0到2^32-1

 

不同类型的整型数据间的赋值,按存储单元中的存储形式直接传送

 

实型数/浮点数:

1.十进制 23.0

2.指数形式 23E1 (2.3)   e前有数字,后面必须是整数

 

实型变量:

单精度float 占4个字节,提供7~8位有效数字

双精度double 占8个字节,提供15~16位有效数字

 

实数:既有整数又有小数的数N=S*R^J

S称为尾数,决定有效数字,即数字的精度

J表示指数(阶码)

R是基数,可取2,4,8,16等

数和阶码都有正负,所以设置数符和阶符

 

字长一定,尾数越多,精度越高;阶码越多,范围越大

 

定点数和浮点数都会出现溢出现象

定点数

定点整数:0<=|x|<=2^(n-1)-1,且

 

例如1111表示-7

定点小数:0<=|x|<=1-2^(-(n-1)),且

 

,例如1111表示-0.875.

定点表示法运算直观,但数的表示范围较小,不同的数运算时要考虑比例因子的选取,以防止溢出。

浮点表示法运算时可以不考虑溢出,但浮点运算,编程较难。要掌握定、浮点数的转换方法及浮点数规格化方法。

 

原码:第1位表示符号,其余位表示值,0表示正,1表示负

[+1]原 = 0000 0001

[-1]原 = 1000 0001

反码:正数的反码是其本身,负数的反码,符号位不变,其余取反

补码:正数的补码是其本身,负数的补码,符号位不变,其余取反+1

 

字符型数据char

作为整型数据在内存中存储的,计算机内部用ASCII码表示所有字符,7位二进制数即可表示一个字符,用一个字节的容量(8位)存储一个字符

 

A的ASCII码是0x41或者65,在内存中表示为 0100 0001

a的ASCII码是97,大小写字母码之间相差32

可以直接用整型值给变量赋值

以下的赋值形式均是等同的

grade=‘A’; grade=65; grade=0x41; grade =0101;

 

非打印字符:用ASCII码或者转义字符都可以表示

\n 换行 ASCII代码:10

\t tab ASCII码:9

\\b 退格 ASCII码:8

\\ 反斜杠字符”\“

\ddd 1到3位8进制数所代表的的字符,8进制

\xhh 1到2位16进制数所代表的的字符,\x表示16进制

转义字符虽然包含2个或多个字符,但只代表1个字符,在内存中只占一个字节

 

字符串常量:用”“表示,在内存中顺序存放,以‘\0’结束

‘A’在内存中占一个字节,”a”占两个字节

 

标识符常量

用两种方法定义标识符常量:使用编译预处理指令;使用C++的常量说明符const

如:

#define PI 3.14//程序中PI均用3.14替代

const float pi=3.14;//将变量pi定义为常量

 

课后练习:

下列常量的表示在C++中是否合法?若不合法,指出原因;若合法,则指出常量的数据类型。

32767 , 35u , 1.25e3.4, 3L , 0.0086e-32, ‘\87’ ,“Computer System” , “a”, ‘a’ , ‘\96\45’

-0 ,+0 ,.5 ,-.567

合法:32767—int型;35u--unsigned型;3L—长整型常量;0.0086e-32—指数形式的浮点常量;

“Computer System”—字符串;“a”—字符串; ‘a’—字符;-0 —int型;+0 ,.5—浮点型 ,-.567—浮点型

非法:1.24e3.4—e后面必须是整数;‘\87’—八进制中不允许出现8;‘\96\45’—八进制中不允许出现9;

 

变量根据取值的不同值域,分为不同类型:整型、实型、字符型、构造型、指针型变量等等

对于任一变量,编译程序要为其分配若干个字节连续的内存单元,以保存变量的取值。开辟空间后,空间中为随机值

改变一个变量的值,要把变量新的取值存放到为该变量所分配的内存单元中;用到一个变量的值时,从该内存单元中取出数据。

变量的说明在前,使用变量在后

 

算术运算符的优先级:() * / % + -

强制转换类型:(类型名)(表达式)

(double)a (int)(x+y) (int)6.2%4=2

 

自增:

i++,先赋值再加1

++i.先加1再赋值

int x = 500;

System.out.println(x++); //x++=500

System.out.println(x); //x=501

 

int y = 100;

System.out.println(++y); //++y=101

System.out.println(y); //y=101

 

自减:

i—,先赋值再减1

—I,先减1再赋值

 

赋值表达式=左边必须是变量名,若两边变量类型不同,在赋值时候要根据左边变量的类型进行转换

少字节—>多字节

1若多字节变量为unsigned,则转换后多余字节补0

short int a = -1;

unsigned long b;

b=a;

a:                 11111111

b:00000000 11111111

2若多字节变量为有符号型,则转换后扩展少字节的最高位,转换后数据的符号不变

short int a = -1;

long b;

b=a;

a:            11111111

b:11111111 11111111

 

多字节—>少字节:低位照搬

int a=-1; int a=65535;

short int b; short int b;

b=a; //b=-1 b=a;//b=-1

a:11111111 11111111

b:            11111111

 

复合的赋值运算符

a+=3 a=a+3

x*=y+3 x=x*(y+3)

x/=x-4 x=x/(x-4)

 

赋值表达式

a=b=5; b=5 a=5

“=”的结合性为从右到左

 

关系运算符:

< > <= >=的优先级大于==  !=,算术运算符的优先级大于关系运算符的优先级

 

关系表达式:结果只有真和假,即1和0.

 

逻辑运算符:

与&& 或|| 非!

优先级:!—>算术—>关系—>逻辑—>赋值—>逗号

作为条件,所有非0值均为真;作为结果,只有0或1 两种 5>3&&2||8<4-!0

 

sizeof()运算符,用于计算某一个操作数类型的字节数

sizeof(int) //4

sizeof(float)//4

sizeof(double)//8

sizeof(char)//1

 

逗号运算符:顺序求解,结果为最后一个表达式的值,并且优先级最低

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值