第二章C++语言的基本概念
例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。 int main() {
int a=9,b=5,c; c=a&b;
cout<
system(“pause”); return 0; }
2. 按位或运算按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
例如:9|5可写算式如下: 00001001|00000101
00001101 (十进制为13)可见9|5=13 int main() {
int a=9,b=5,c; c=a|b;
couty<
3. 按位异或运算按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:
00001001^00000101 00001100 (十进制为12) int main(){ int a=9; a=a&15;
cout<
4. 求反运算 求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各
北京12中计算机教研室 6
第二章C++语言的基本概念
二进位按位求反。例如~9的运算为: ~(0000000000001001)结果为:1111111111110110
5. 左移运算左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,
高位丢弃,低位补0。例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。6. 右移运算 右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设 a=15,a>>2 表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。 [例1]右移和与运算 #include
unsigned a,b;
cout<<\ cin>>a;
b=(a>>1); //将变量a变成2进制数,右移1位,再将值赋给给变量b。 b=b&15;//将变量b的二进制数与15的二进制数按位与。 cout<
[例2]字符右移、或、与运算 #include
char a='a',b='b'; int p,c,d; p=a;
p=(p<<8)|b;
d=p&0xff;//与16进制数ff相与
c=(p&0xff00)>>8;与的结果右移8位。
cout<
(5)赋值运算符 = (6)条件运算符 ( ? :) (7)逗号运算符(,)
北京12中计算机教研室 7
第二章C++语言的基本概念
(8)指针运算符(*)
(9)引用运算符和地址运算符(&) (10)求字节运算符(sizeof)
(11)强制类型转换运算符((类型)或类型( )) (12)成员运算符(.) (13)指向成员的运算符(->) (14)下标运算符([ ])
第二节 基本数据类型
一、为什么会有数据类型的概念
对不同类型的数值,计算机的处理方式不同。由于计算机不能自动识别某个数值是属于哪 在这种情况下,我们只好告诉它,什么样的东西能吃,什么样的东西不能吃,吃的东西该怎么吃等等等等。这实际上就是把事物分属不同的类型,对不同类型的事物采取不同的处理方法。基于这种原因,我们事先告诉计算机对什么样数据类型的数值要采取什么样的处理方法,并把计算机中要\吃\的东西也就是计算机要处理的数值分属为不同的类型送入计算机,这样计算机这个笨家伙才能正确的对数值进行处理。
种类型的,所以只好事先对在计算机中使用到的各个数值进行分类,这样不同类型的数值便属于不同的数据类型。在这种情况下,计算机在遇到一个数值时,根据它所属的数据类型就可以采取相应的处理方式而不会产生错误。
为什么计算机不能自动识别某个数值是属于哪种类型的呢?打个比方说,我们经常见到小孩拿起什么东西就吃什么东西,这是因为小孩的智力比较低,在他的大脑中外界的一切事物都只有一种属性,那就是可以吃。所以他才会拿起什么东西就吃什么东西。
电脑的智力比起小孩来可是差得太远了。它笨到什么程度呢?笨到你让它干什么它才干什么,它不会象小孩一样见到什么就拿起什么来吃,必须在你发出\吃\的命令后,才去吃东西。而且它只管吃,至于有没有吃的东西或者这个东西能不能吃,它不管。这就是我们所使用的电脑的真实面目。
这就是为什么要在计算机中引入数据类型的原因。 在C++语言中共有十种不同的数据类型。
数据是程序设计的一个重要内容。其重要特征──数据类型确定了该数据的类型、取值范围及所能参与的运算。
北京12中计算机教研室 8
第二章C++语言的基本概念
C++语言提供了丰富的数据类型:
整形 (int) 实型 (float) 基本数据类型 字符型 (char) 逻辑型 (bool) 数据类型 数组 (type [])
非基本数据类型 空类型 (void) 指针 (type *)
结构 (struct) 联合 (union) 枚举 (enum) 类 (class)
(上图中type表示非空的数据类型)
首先介绍常用的整型、实型、字符型和逻辑型四种基本类型:
一·整数
整型变量:C++中的标识符命名规定:
? 第一个字符必须是字母
? 其后的字符可以是字母、数字、下划线 ? C++中的标识符区分大小写
整型变量可分为以下几类: 1.基本型
类型说明符为int,在内存中占2个字节,其取值为基本整常数。 2.短整量
类型说明符为short int或short'C110F1。所占字节和取值范围均与基本型相同。 3.长整型
北京12中计算机教研室 9
第二章C++语言的基本概念
类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。 4.无符号型
类型说明符为unsigned。
无符号型又可与上述三种类型匹配而构成:
(1)无符号基本型 类型说明符为unsigned int或unsigned。 (2)无符号短整型 类型说明符为unsigned short (3)无符号长整型 类型说明符为unsigned long
各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。 下表列出了Turbo C中各类整型量所分配的内存字节数及数的表示范围。 类型说明符 数的范围 分配字节数 int -32768~32767 ■■ short int -32768~32767 ■■ signed int -32768~32767 ■■ unsigned int 0~65535 ■■ long int -2147483648~2147483647 ■■■■ unsigned long 0~4294967295 ■■■■
整型变量的说明
变量说明的一般形式为: 类型说明符 变量名标识符,变量名标识符,...; 例如: int a,b,c; (a,b,c为整型变量) long x,y; (x,y为长整型变量)
unsigned p,q; (p,q为无符号整型变量) 在书写变量说明时,应注意以下几点:
1.允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。 2.最后一个变量名之后必须以“;”号结尾。
3.变量说明必须放在变量使用之前。一般放在函数体的开头部分。 整数类型包括正整数、负整数和零。C++语言用标识符号int表示整数类型。 例如:385、 0 、+4334、-6785 、78、542 都是合法的整数。 78.542, 7.00 , 45a 都是非法的整数。 整型又可分为:
北京12中计算机教研室 10