Presentation is loading. Please wait.

Presentation is loading. Please wait.

第二章 数据类型与运算符 基本数据类型 变量的使用 C语言关键字 数据类型转换规则 算术运算符与赋值运算符 比较运算符与逻辑运算符

Similar presentations


Presentation on theme: "第二章 数据类型与运算符 基本数据类型 变量的使用 C语言关键字 数据类型转换规则 算术运算符与赋值运算符 比较运算符与逻辑运算符"— Presentation transcript:

1 第二章 数据类型与运算符 基本数据类型 变量的使用 C语言关键字 数据类型转换规则 算术运算符与赋值运算符 比较运算符与逻辑运算符
第二章 数据类型与运算符 基本数据类型 变量的使用 C语言关键字 数据类型转换规则 算术运算符与赋值运算符 比较运算符与逻辑运算符 主讲:李祥 时间:2015年10月

2 2.1 进制 2.2 关键字和标识符 2.3 常量与变量 2.4 运算符 2.5 本章小结

3 2.1 进制 2.1.1 什么是二进制 在大多数计算机系统中,数据都是通过二进制的形式存在的。二进制是一种“逢二进一”的机制,它用0和1两个符号来描述。为了帮助大家更好地理解二进制,接下来通过二进制和十进制的对比来描述二进制的表示方式,如表2-1所示: 表 十进制与二进制对照表 十进制 二进制 0000 5 0101 1 0001 6 0110 2 0010 7 0111 3 0011 8 1000 4 0100 9 1001

4 2.1 进制 2.1.2 八进制与十六进制 八进制 八进制是一种“逢八进一”的进制,它由0~7八个符号来描述。同样地,此处通过十进制和八进制的对比来描述八进制的表示方式,如表2-2所示: 十进制 八进制 9 11 1 10 12 2 13 3 14 4 15 5 16 6 17 7 20 8 21

5 2.1 进制 十六进制 十六进制是一种“逢十六进一”的进制,它由0~9、A~F十六个符号来描述。下面通过十进制和十六进制的对比来描述十六进制的表示方式,如表2-3所示: 十进制 十六进制 17 11 1 18 12 2 19 13 3 20 14 4 21 15 5 22 16 6 23 7 24 8 25 9 26 1A 10 A 27 1B B 28 1C C 29 1D D 30 1E E 31 1F F 32 33

6 2.1 进制 2.1.3 进制转换 十进制转换为二进制 十进制转换成二进制可以采用除2取余的方式。 即将要转换的数先除以2,得到商和余数,
将商继续除以2,获得商和余数, 此过程一直重复直到商为0。 最后将所有得到的余数倒序排列, 即可得到转换结果。演算过程如图2-1: 图 十进制转换为二进制

7 2.1 进制 二进制转换为十进制 二进制转化成十进制要从右到左用二进制位上的每个数去乘以2的相应次方,例如,将最右边第一位的数乘以2的0次方,第二位的数乘以2的1次方,第n位的数乘以2的n-1次方,然后把所有乘的结果相加,得到的结果就是转换后的十进制。 例如,把一个二进制数 转换为10进制,转换方式如下: 由于0乘以多少都是0,所以上述表达式也可以简写为: 0 * * * * * * * * 27 = 100 1 * * * 26= 100

8 2.1 进制 八进制与二进制之间的转换 八进制与二进制之间的转换比较常见的操作就是将一个二进制数转为八进制。在转换的过程中有一个技巧,就是将二进制数自右向左每三位分成一段(若不足三位,用0补齐),然后将二进制每段的三位转为八进制的一位,转换过程中数值的对应关系如表2-4: 表 二进制与八进制数值对应表 二进制 八进制 000 001 1 010 2 011 3 100 4 101 5 110 6 111 7

9 2.1 进制 二进制与十六进制之间的转换 将二进制转十六进制时,与转八进制类似,不同的是要将二进制数每四位分成一段(若不足4位用0补齐),查表转换即可。二进制转十六进制过程中数值的对应关系如表2-5所示: 表2-5 二进制与十六进制数值对应表 二进制 十六进制 0000 1000 8 0001 1 1001 9 0010 2 1010 A 0011 3 1011 B 0100 4 1100 C 0101 5 1101 D 0110 6 1110 E 0111 7 1111 F

10 2.1 进制 ASCII码表 我们通常使用的英文字符编码是 ASCII(American Standard Code for Information Interchange 美国信息交换标准编码)。ASCII编码是一个标准,其内容规定了把英文字母、数字、标点、字符转换成计算机能识别的二进制数的规则,下表为ASCII码表的可打印字符部分(0 ~ 127),供大家查阅使用,如表2-6所示:

11 2.1 进制 表2-6 ASCII码表 代码 字符 32 [空格] 64 @ 96 ` 1 33 ! 65 A 97 a 2 34 " 66
32 [空格] 64 @ 96 ` 1 33 ! 65 A 97 a 2 34 " 66 B 98 b 3 35 # 67 C 99 c 4 36 $ 68 D 100 d 5 37 % 69 E 101 e 6 38 & 70 F 102 f 7 39 ' 71 G 103 g 8 退格 40 ( 72 H 104 h 9 Tab 41 ) 73 I 105 i 10 换行 42 * 74 J 106 j 11 43 + 75 K 107 k 12 44 , 76 L 108 l 13 回车 45 - 77 M 109 m 14 46 . 78 N 110 n 15 47 / 79 O 111 o 16 48 80 P 112 p 17 49 81 Q 113 q 18 50 82 R 114 r 19 51 83 S 115 s 20 52 84 T 116 t 21 53 85 U 117 u 22 54 86 V 118 v 23 55 87 W 119 w 24 56 88 X 120 x 25 57 89 Y 121 y 26 58 : 90 Z 122 z 27 59 ; 91 [ 123 { 28 60 92 \ 124 | 29 61 = 93 ] 125 } 30 62 94 ^ 126 ~ 31 63 ? 95 _ 127

12 2.2 关键字与标识符 关键字 所谓关键字是指在编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字。关键字在程序中用于表示特殊含义,不能被随便用作变量名、函数名等,在C语言中,C89标准中共定义了37个关键字,具体如下: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue signed void default goto sizeof volatile do static while for if

13 2.2 关键字与标识符 标识符 在编程中,经常要定义一些符号来标记一些名称,如变量名、方法名,这些符号被称为标识符。标识符的命名要遵循一些规范: 标识符只能由字母、数字和下划线组成; 标识符不能以数字作为第一个字符; 标识符不能使用关键字; 标识符区分大小写字母,如add、Add和ADD是不同的标识符; 尽量做到“见名知意”,以增加程序的可读性,如age表示年龄,length表示长度等; 虽然ANSIC中没有规定标识符的长度,但建议标识符的长度不超过8个字符

14 2.3 常量与变量 常量 生活中有些事物需要用数值来表示,例如人民币、时间等。在程序中,同样也会出现一些数值,例如123、1.5、‘a’等,这些值是不可变的,通常将它们称之为常量。 整型常量 整型常量是整数类型的数据,又被称为整常数。整常数可用以下三种形式表示,具体如下: 1.十进制整数,如123,-456,0; 2.八进制整数,如0123,-011; 3.十六进制整数,如0x123,-0x12;

15 2.3 常量与变量 实型常量 实型常量也称为浮点数常量,也就是在数学中用到的小数,可以分为float单精度浮点数和double双精度浮点数两种类型。其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何的后缀。浮点数常量还可以通过指数形式来表示。 字符型常量 字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号(' ')引起来,它可以是英文字母、数字、标点符号以及由转义序列来表示的特殊字符。

16 2.3 常量与变量 变量 在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元我们称之为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。 接下来,通过一段代码来学习变量的定义,具体如下: 其内存变化 如下图: int x = 0,y; y = x+3;

17 2.3 常量与变量 变量的数据类型 在应用程序中,由于数据存储时所需要的容量各不相同,因此,为了区分不同的数据,需要将数据划分为不同的数据类型。C语言中的数据类型有很多种,具体如图2-2所示: 整型变量 在程序开发中,经常会遇到0、-100、1024 等数字,这些数字都可称为整型。整型就是一个 不包含小数部分的数。在C语言中,根据数值 的取值范围,可以将整型定义为短整型(short int)、 图 2-2 数据类型 基本整型(int)和长整型(long int)。表2-7列举了整数类型的 长度及其取值范围。 图2-2 数据类型

18 2.3 常量与变量 表2-7 整数类型的长度及其取值范围 需要注意的是,整型数据在内存中占的字节数与所选择的操作系统有关。虽然C语言标准中没有明确规定整型数据的长度,但long类型整数的长度不能短于int类型,short类型整数的长度不能短于int类型。 修饰符 数据类型 占用空间 取值范围 [signed] short [int] 16位(2个字节) -32768到32767 (-215 ~ 215-1) int 32位(4个字节) 到 (-231 ~ 231-1) long [int] unsigned 0到65535 (0 ~ 216-1) 0到 (0 ~ 232-1)

19 2.3 常量与变量 实型变量 实型变量也可以称为浮点型变量,浮点型变量是用来存储小数数值的。在C语言中,浮点型变量分为两种:单精度浮点数(float)、双精度浮点数(double),但是double型变量所表示的浮点数比float型变量更精确。 表2-8列举了两种不同浮点型数所占用的存储空间大小及取值范围: 表 浮点型长度及其取值范围 在取值范围中,E表示以10为底的指数,E后面的“+”号和“-”号代表正指数和负指数。 类型名 占用空间 取值范围 float 32位(4个字节) 1.4E-45 ~ 3.4E+38,-1.4E-45 ~ -3.4E+38 double 64位(8个字节) 4.9E-324 ~ 1.7E+308, -4.9E-324 ~ -1.7E+308

20 2.3 常量与变量 为了让读者更好地理解浮点型数据在内存中的存储方式,接下来以单精度浮点数为例进行详细讲解,如图2-3所示: 在图2-3中,浮点数包含符号位、小数位和指 数位三部分。例如,小数 在内存中的符号 位为“+”,小数部分为.31415,指数位为1,连 图2-3 单精度浮数存储 方式接在一起即为 “ * 101 = ”。 在C语言中,一个小数会被默认为double类型的值,因此在为一个float类型的变量赋值时需要注意一点,所赋值的后面一定要加上字母“F”(或者小写“f”),而为double类型的变量赋值时,其所赋值后面的字符“D”(或小写“d”),可以省略。

21 脚下留心 float和double之间的数据转换:

22 2.3 常量与变量 字符型变量 字符型变量用于存储一个单一字符,在C语言中用char表示,其中每个字符变量都会占用2个字节。在给字符型变量赋值时,需要用一对英文半角格式的单引号(‘ ’)把字符括起来 。例如,‘A’的声明如下所示: 上述代码中,将字符常量'A'放到字符变量ch中,实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的ASCII编码放到变量的存储单元中。 需要注意的是,除了可以直接从键盘上输入的字符(如英文字母,标点符号,数字,数学运算符等)以外,还有一些字符是无法用键盘直接输入的,比如,“回车”,此时需要采用一种新的定义方式——转义字符,它以反斜杠\开头,随后接特定的字符。 char ch = 'A'; //为一个char类型的变量赋值字符'a’

23 2.3 常量与变量 表2-9列举了一些常见的转义字符: 表2-9 部分常见转义字符表 转义字符 对应字符 ASCII码表中的值 '\t'
制表符(Tab键) 9 '\n' 换行 10 '\r' 回车 13 '\"' 双引号 34 '\'' 单引号 39 '\\' 反斜杠 92

24 2.3 常量与变量 枚举类型变量 在日常生活中有许多对象的值是有限的,可以一一列举出来。例如一个星期内只有七天、一年只有十二个月等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。枚举类型就是其值可以被一一列举出来,并且变量的取值不能超过定义的范围。 枚举类型的声明方式比较特殊,具体格式如下: 在上述代码中,enum表示声明枚举的关键字,枚举名表示枚举对象的名称。 需要注意的是,枚举值是常量,不是变量,在程序中不能赋值。 enum 枚举名 {标识符1 = 整型常量1, 标识符2 = 整型常量2, ...};

25  多学一招 在枚举中规定,如果不给标识符指定具体的值,会默认该标识符的值等于前一标识符的值加1。 运行结果如图2-4所示:
如果不指定第一个标识符对应的常量,则它的默认值是0。例: 运行结果如图2-4所示: 图2-4 运行结果 enum month{JAN=1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC}; #include <stdio.h> //定义一组常量 enum Constants {C1, C2, C3 = 4, C4, C5 = 3, C6, C7, C8 = '0', C9}; void main() { printf("C1=%d\n", C1); }

26 2.3 常量与变量 类型转换: C语言程序中的类型转换可分为隐式和强制类型转换两种: 1.隐式类型转换 所谓隐式类型转换指的是,系统自动将取值范围小的数据类型转换为数据取值范围大的数据类型,它是由系统自动转换完成的。例如,将int类型和double类型的数据相加,系统会将int类型的数据转换为double类型的数据,再进行相加操作。 2.强制类型转换 所谓强制类型转换指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型,其基本语法格式如下所示: (类型名)(表达式)

27 2.3 常量与变量 强制类型转换: 1).浮点型与整型 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分,只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式,即小数点后带若干个0。需要注意的是,赋值时的类型转换实际上是强制的。 2).单、双精度浮点型 由于C语言中的浮点值总是用双精度表示的,所以float 型数据参与运算时只需要在尾部加0延长为double型数据。double型数据转换为float型时,会造成数据精度丢失,有效位以外的数据将会进行四舍五入。

28 2.3 常量与变量 3).char型与int型 将int型数值赋给char型变量,只保留其最低8位,高位部分舍弃。 将char型数值赋给int型变量时, 一些编译程序不管其值大小都作正数处理,而另一些编译程序在转换时会根据char型数据值的大小进行判断,若值大于127,就作为负数处理。对于使用者来讲,如果原来char型数据取正值,转换后仍为正值。如果原来char型值可正可负,则转换后也仍然保持原值,只是数据的内部表示形式有所不同。 4).int型与long型 long型数据赋给int型变量时,将低16位值送给int型变量,而将高16 位截断舍弃。(这里假定int型占两个字节)。 将int型数据送给long型变量时,其外部值保持不变,而内部形式有所改变。

29 2.3 常量与变量 5).无符号整数 将一个unsigned型数据赋给一个长度相同的整型变量时(如:unsigned→int、unsigned long→long,unsigned short→short) ,内部的存储方式不变,但外部值却可能改变。 将一个非unsigned整型数据赋给一个长度相同的unsigned型变量, 内部存储形式不变,但外部表示时总是无符号的。

30 2.4 运算符 运算符与表达式 应用程序中,经常会对数据进行运算,为此,C语言提供了多种类型的运算符,即专门用于告诉程序执行特定运算或逻辑操作的符号。根据运算符的作用,可以将C语言中常见的运算符分为六大类: 表 常见的运算符类型及其作用 表2-10列举了C语言中常用的运算符类型,并且每种类型运算符的作用都不同。运算符是用来操作数据的,因此,这些数据也被称为操作数,使用运算符将操作数连接而成的式子称为表达式。 运算符类型 作用 算术运算符 用于处理四则运算 赋值运算符 用于将表达式的值赋给变量 比较运算符 用于表达式的比较,并返回一个真值或假值 逻辑运算符 用于根据表达式的值返回真值或假值 位运算符 用于处理数据的位运算 sizeof运算符 用于求字节数长度

31 2.4 运算符 表达式有如下特点: 1. 常量和变量都是表达式,例如,常量3.14、变量i。 2. 运算符的类型对应表达式的类型,例如算术运算符对应算术表达式。 3. 每一个表达式都有自己的值,即表达式都有运算结果。

32 2.4 运算符 算术运算符 在数学运算中最常见的就是加减乘除四则运算。C语言中的算术运算符就是用来处理四则运算的符号,这是最简单、最常用的运算符号。表2-11列出了C语言中的算术运算符及其用法: 表 算术运算符 运算符 运算 范例 结果 + 正号 +3 3 - 负号 b=4;-b; -4 5+5 10 6-4 2 * 3*4 12 / 5/5 1 % 取模(即算术中的求余数) 7%5 ++ 自增(前) a=2;b=++a; a=3;b=3; 自增(后) a=2;b=a++; a=3;b=2; -- 自减(前) a=2;b=--a; a=1;b=1; 自减(后) a=2;b=a--; a=1;b=2;

33 2.4 运算符 算术运算符看上去都比较简单,但在使用时需要注意以下几点: 1. 进行四则混合运算时,运算顺序遵循数学中“先乘除后加减”的原则; 2. 在进行自增(++)和自减(--)的运算时,如果运算符(++或--)放 在操作数的前面则先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算; 3. 在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有浮点数参与运算,系统会将整数数据隐形类型转换为浮点类型,最终得到的结果会是一个浮点数; 4. 取模运算在程序设计中都有着广泛的应用,例如判断奇偶数的方法就是求一个数字除以2的余数是1还是0。在进行取模运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。

34 2.4 运算符 赋值运算符 赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。表2-12列举了C语言中的赋值运算符及其用法: 表 赋值运算符 在表2-12中,“=”的作用不是表示相等关系,而是赋值运算符,即将等号右侧的值赋给等号左侧的变量。 运算符 运算 范例 结果 = 赋值 a=3;b=2; += 加等于 a=3;b=2;a+=b; a=5;b=2; -= 减等于 a=3;b=2;a-=b; a=1;b=2; *= 乘等于 a=3;b=2;a*=b; a=6;b=2; /= 除等于 a=3;b=2;a/=b; %= 模等于 a=3;b=2;a%=b;

35 2.4 运算符 在赋值运算符的使用中,需要注意以下几个问题: 1. 在C语言中可以通过一条赋值语句对多个变量进行赋值,例: 2.在表2-12中,除了“=”,其他的都是特殊的赋值运算符,接下来以“+=”为例,学习特殊赋值运算符的用法,示例代码如下: 上述代码中,执行代码x += 3后,x的值为5。这是因为在表达式x+=3中的执行过程为: a. 将x的值和3的执行相加; b. 将相加的结果赋值给变量x; int x, y, z; x = y = z = 5; //为三个变量同时赋值 int x=2; x+=3;

36  多学一招 运算符的结合性: 运算符的结合性指同一优先级的运算符在表达式中操作的结合方向,即当一个运算对象两侧运算符的优先级别相同时, 运算对象与运算符的结合顺序。大多数运算符结合方向是“自左至右”。 上述代码中表达式a- b+c,b 两侧有-和+两种运算符的优先级相同, 按先左后右的结合方向, b 先与减号结合, 执行a- b 的运算, 然后再执行加c 的运算。除了自左至右的结合性外, C 语言还有三类运算符,它们分别是单目运算符、条件运算符和赋值运算符。以赋值运算符为例,具体代码如下所示: a-b+c; a=b+c;

37 2.4 运算符 需要注意的是,在使用比较运算符时,不能将比较运算符“==”误写成赋值运算符“=”。 2.4.4 比较运算符
比较运算符 比较运算符用于对两个数值或变量进行比较,其结果是一个逻辑值(“真”或“假”),如“5>3”,其值为“真”。C语言的比较运算中,“真”用数字“1”来表示,“假”用数字“0”来表示。表2-13列出了C中的比较运算符及其用法: 表 比较运算符 需要注意的是,在使用比较运算符时,不能将比较运算符“==”误写成赋值运算符“=”。 运算符 运算 范例 结果 == 相等于 4 == 3 != 不等于 4 != 3 1 小于 4 < 3 大于 4 > 3 <= 小于等于 4 <= 3 >= 大于等于 4 >= 3

38 2.4 运算符 逻辑运算符 逻辑运算符用于判断数据的真假,其结果仍为“真”或“假”。表2-14列举了C语言中的逻辑运算符及其范例: 表 逻辑运算符 运算符 运算 范例 结果 ! !a 如果a为假,则!a为真; 如果a为真,则!a为假 && a&&b 如果a和b都为真,则结果为真否则为假 || a|| b 如果a和b有一个或以上为真,则结 果为真,二者都为假时,结果为假

39 2.4 运算符 当使用逻辑运算符时,有一些细节需要注意,具体如下: 1. 逻辑表达式中可以包含多个逻辑运算符,例如,!a||a>b; 2. 三种逻辑运算符的优先级从高到低依次为:!、&&、||; 3. 运算符“&&”表示与操作,当且仅当运算符两边的表达式结果都为真时,其结果才为真,否则结果为假。如果左边为假,那么右边表达式是不会进行运算的; 4. 运算符“||”表示或操作,当且仅当运算符两边的表达式结果都为假时,其结果为假。同“&&”运算符类似,如果运算符“||”左边操作数的结果为真,右边表达式是不会进行运算的;

40 2.4 运算符 位运算符 位运算符是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作的。C 语言中的位运算符及其范例如表2-15所示: 表 位运算符 运算符 运算 范例 结果 & 按位与 0 & 0 0 & 1 1 & 1 1 1 & 0 | 按位或 0 | 0 0 | 1 1 | 1 1 | 0 ~ 取反 ~0 ~1 ^ 按位异或 0 ^ 0 0 ^ 1 1 ^ 1 1 ^ 0 <<  左移 <<2 <<2 >>  右移 >>2 >>2

41 2.4 运算符 位运算符介绍: 与运算符“&”是将参与运算的两个二进制数进行“与”运算,如果两个二进制位都为1,则该位的运算结果为1,否则为0。例如将6和11进行与运算, 6对应的二进制数为 ,11对应的二进制数为 ,具体演算过程如下所示: & ──────────── 运算结果为 ,对应数值2。

42 2.4 运算符 与运算符“&”是将参与运算的两个二进制数进行“与”运算,如果两个二进制位都为1,则该位的运算结果为1,否则为0。例如将6和11进行与运算, 6对应的二进制数为 ,11对应的二进制数为 ,具体演算过程如下所示: & ──────────── 运算结果为 ,对应数值2。

43 2.4 运算符 位运算符“|”是将参与运算的两个二进制数进行“或”运算,如果二进制位上有一个值为1,则该位的运行结果为1,否则为0。例如将6与11进行或运算,具体演算过程如下: | ————————— 运算结果为 ,对应数值15。

44 2.4 运算符 位运算符“~”只针对一个操作数进行操作,如果二进制位是0,则取反值为1;如果是1,则取反值为0。例如将6进行取反运算,具体演算过程如下: ~ ————————— 运算结果为 ,对应数值-7。

45 2.4 运算符 位运算符“^”是将参与运算的两个二进制数进行“异或”运算,如果二进制位相同,则值为0,否则为1。例如将6与11进行异或运算,具体演算过程如下: ^ ————————— 运算结果为 ,对应数值13。

46 2.4 运算符 位运算符“<<”就是将操作数所有二进制位向左移动一位。运算时,右边的空位补0。左边移走的部分舍去。例如一个byte类型的数字11用二进制表示为 ,将它左移一位,具体演算过程如下: <<1 ————————— 运算结果为 ,对应数值22。

47 2.4 运算符 位运算符“>>”就是将操作数所有二进制位向右移动一位。运算时,左边的空位根据原数的符号位补0或者1(原来是负数就补1,是正数就补0)。例如一个byte的数字11用二进制表示为 ,将它右移一位,具体演算过程如下: >>1 ————————— 运算结果为 ,对应数值5。

48 2.4 运算符 sizeof()运算符 同一种数据类型在不同的编译系统中所占空间不一定相同,例如,在基于16位的编译系统中,int类型占用2个字节,而在32位的编译系统中,int类型占用4个字节。为了获取某一数据或数据类型在内存中所占的字节数,C语言提供了sizeof运算符,使用sizeof运算符获取数据字节数,其基本语法规则如下所示: sizeof(数据类型名称); sizeof(变量名称);

49 2.4 运算符 运算符的优先级 在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,我们把这种顺序称作运算符的优先级。表2-16列出了C语言中运算符的优先级,数字越小优先级越高。 表2-16 运算符优先级 优先级 运算符 1 . [] () 2 ~ ! (数据类型) 3 * / % 4 + - 5 << >> >>> 6 < > <= >= 7 == != 8 & 9 ^ 10 | 11 && 12 || 13 ?:(三目运算符) 14 = *= /= %= += -= <<= >>= >>>= &= ^= |=

50 +、-、*、/、%、<<、==、…
 多学一招 单目、双目、三目运算符: 在C语言中根据运算符进行运算需根据变量的个数可以将运算符分为单目运算符、双目运算符和三目运算符,具体如表2-17所示: 表2-17 单目、双目、三目运算符比较 在表2-17中单目运算符的优先级高于双目运算符和三目运算符。三目运算符“?:”用于条件判断的情况,读者在这只需了解即可,在后面的章节中将会进行详细讲解。 名称 运算所需变量个数 范例 单目运算符 1个 ++、--、!、sizeof、~、… 双目运算符 2个 +、-、*、/、%、<<、==、… 三目运算符 3个 ?:

51 本章小结 本章主要讲解了C语言中的数据类型以及运算符。其中包括进制、基本数据类型、类型转换、运算符与表达式等。通过本章的学习,读者可以掌握C语言中数据类型及其运算的一些相关知识。熟练掌握本章的内容,可以为后面的学习打下坚实的基础。

52 谢 谢!


Download ppt "第二章 数据类型与运算符 基本数据类型 变量的使用 C语言关键字 数据类型转换规则 算术运算符与赋值运算符 比较运算符与逻辑运算符"

Similar presentations


Ads by Google