第二章 数据描述

42
1 你你你你你你你你你你你 C 你你你你 你你你你 你你你 你你你你 本本本本本你你你你 你你你你 你你你你你 你你你你你你你你你你 你你你你你你你 你你你 你你你你

Upload: justina-wilcox

Post on 03-Jan-2016

37 views

Category:

Documents


4 download

DESCRIPTION

第二章 数据描述. 本章知识点: 预备知识 数据类型 常量与变量 不同类型数据间的转换 运算符和表达式. 计算机中数的表示及进制转换 数码、基与权 数码:表示数的符号 基:数码的个数 权:每一位所具有的值 数制. 2.0 预备知识. 各种进制之间的转换. 二进制、八进制、十六进制转换成十进制 方法:按权相加. 各种进制之间的转换 ( 整数 ). 例 把十进制数 459 转换成十六进制数. 1 C B. 459. 16. 余 11. 余 12. 16. 28. 16. 1. 余 1. 0. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第二章 数据描述

1

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

本章知识点:

预备知识数据类型常量与变量不同类型数据间的转换运算符和表达式

第二章 数据描述

Page 2: 第二章 数据描述

2

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

计算机中数的表示及进制转换数码、基与权数码:表示数的符号基:数码的个数权:每一位所具有的值

数制

2.0 预备知识

Page 3: 第二章 数据描述

3

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

二进制、八进制、十六进制转换成十进制 方法:按权相加

10012345

2 59212120212121111011 )()(例

10012

8 94868381136 )()(例

100123

16 79781610162161516121 )()(例 AF

各种进制之间的转换

Page 4: 第二章 数据描述

4

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

二进制、八进制、十六进制转换成十进制

十进制转换成二进制、八进制、十六进制

方法:连续除以基,从低到高记录余数,直至商为 0

例 把十进制数 459转换成十六进制数

45916

2816

1160

(459)10=(1CB)16

1 C B

余 11

余 12

余 1

各种进制之间的转换 (整数 )

方法:按权相加

Page 5: 第二章 数据描述

5

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

二进制转换成八进制: 从右向左,每 3位一组(不足 3位左补 0),转换成八进制

八进制转换成二进制: 用 3位二进制数代替每一位八进制数

例 (1101001)2=(001,101,001)2=(151)8

例 (246)8=(010,100,110)2=(10100110)2

000 ~ 0001 ~ 1010 ~ 2011 ~ 3100 ~ 4101 ~ 5110 ~ 6111 ~ 7

二进制与八进制之间的转换

Page 6: 第二章 数据描述

6

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

二进制转换成十六进制: 从右向左,每 4位一组(不足 4位左补0),转换成十六进制

十六进制转换成二进制: 用 4位二进制数代替每一位十六进制数

例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16

例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2

0000 ~ 00001 ~ 10010 ~ 20011 ~ 30100 ~ 40101 ~ 50110 ~ 60111 ~ 71000 ~ 81001 ~ 91010 ~ A1011 ~ B1100 ~ C1101 ~ D1110 ~ E1111 ~ F

二进制与十六进制之间的转换

Page 7: 第二章 数据描述

7

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

内存以字节为单元组成每个字节有一个地址一个字节一般由 8个二进制位组成每个二进位的值是 0或 1

01234567

0123456789

10

……

...

7

6

4

3

2

5

1

字节和位

Page 8: 第二章 数据描述

8

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

原码:最高位为符号位,其余各位为数值本身的绝对值反码:正数:反码与原码相同负数:符号位为 1,其余位对原码取反

补码:正数:原码、反码、补码相同负数:最高位为 1,其余位为原码取反,再对整个数加 1

3

12

6

9

1

2

4

57

8

10

11

9-5=49+7=16=(14)12

——数值的表示方法 原码、反码和补码

Page 9: 第二章 数据描述

9

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

原码 反码 补码+7 00000111 00000111 00000111

-7 10000111 11111000 11111001

+0 00000000 00000000 00000000

-0 10000000 11111111 00000000

数的范围01111111~11111111(-127~+127)

01111111~10000000(-127~+127)

01111111~10000000(-128~+127)

负数补码转换成十进制数:最高位不动,其余位取反加 1

例 补码: 11111001 取反: 10000110 加 1 : 10000111=-7

(用一字节表示数)

Page 10: 第二章 数据描述

10

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

数据类型总表

C数据类型

基本类型

构造类型

指针类型

空类型 void

定义类型 typedef

字符类型 char

枚举类型 enum

整 型

实型单精度型 float

双精度型 double

数组

结构体 struct

共用体 union

短整型 short

长整型 long

整型 int

数据类型决定:1. 数据占内存字节数2. 数据取值范围3. 其上可进行的操作

2.1 数据类型

Page 11: 第二章 数据描述

11

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

类型符号 关键字

数的表示范围所占位数

整型

字符

实型

(signed)int 16 -32768~32767(signed)short 16 -32768~32767

(signed)long 32 -2147483648~214748364716unsigned

int0~65535

32 0~4294967295unsigned long

unsigned short 16 0~65535

有 float 32

3.4e-38~3.4e38有 double 6

41.7e-308~1.7e308

有 char 8 -128~127

无 unsigned char 8 0~255

说明 :数据类型所占字节数随机器硬件不同而不同 ,上表以 IBM PC机为例 :

请看int和unsigned int

基本数据类型

Page 12: 第二章 数据描述

12

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

标识符定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字

长度:最长 32个字符命名原则:见名知意

不宜混淆 如 l与 I, o与 0

例 :判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char a>b _above $123

< >

M.D.John 3days#33

char $123a>b

2.2 常量与变量

Page 13: 第二章 数据描述

13

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

一般用大写字母是宏定义预处理命令,不是 C语句

直接常量 : 整型常量 请点击: 实型常量 请点击: 字符常量 请点击: 字符串常量 请点击:

如 #define PRICE 30

定义:程序运行时其值不能改变的量(即常数)分类 :符号常量 :用标识符代表常量

定义格式: #define 符号常量 常量

< >

例 符号常量举例 (ch2_1.c)

#define PRICE 30main(){ int num,total; num=10; total=num*PRICE; printf("total=%d",total);}

运行结果: total=300

常量

Page 14: 第二章 数据描述

14

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

三种形式:十进制整数:由数字 0~9和正负号表示 . 如 123,-

456,0八进制整数:由数字 0开头 ,后跟数字 0~7表示 .如

0123,011十六进制整数:由 0x开头 ,后跟 0~9,a~f,A~F表

示 . 如 0x123,0Xff

例 12 与 12L 例 30000 为 int型 65536 为 long int 型

整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母 l或 L,认为它是 long int 型常量

问题:0123 = ( )10

0x123 = ( )10

0Xff = ( )10

83

291

255

问题:0123 = ( )10

0x123 = ( )10

0Xff = ( )10

整型常量(整常数)

Page 15: 第二章 数据描述

15

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

表示形式: 十进制数形式:(必须有小数点) 如

0.123, .123, 123.0, 0.0, 123.指数形式:( e或 E之前必须有数字;指数必须为整

数)如 12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5

实型常量的类型默认 double型在实型常量后加字母 f或 F,认为它是 float 型

实型常量(实数或浮点数)

Page 16: 第二章 数据描述

aaa 16

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

定义 :用单引号括起来的单个普通字符或转义字符 . 字符常量的值:该字符的 ASCII码值

<

转义字符及其含义:

转义字符 含义

\n

\v

\r

\a

\‘

\ddd

\t

\b

\f

\\

\“

\xhh

转义字符 含义

换行

垂直制表

回车

响铃单引号

3位 8进制数代表的字符

水平制表

退格

换页

反斜线

双引号2位 16进制数代表的字符

‘如 \101’ -----------‘A’ ‘\012’ -----------’\n’ ‘\376’ -----------’’ ‘\x61’ -----------’a’ ‘\60’ -----------’0’ ‘\483’ ----------()

例 :‘A’-------’\101’-------’\x41’--------65

‘如 A’——65 ‘, a’——97, ‘0’——48 , ‘\n’——10

‘如 a’ ‘A’ ‘?’ ‘\n’ ‘\101’

转义字符 :反斜线后面跟一个字符或一个代码值表示

例 转义字符举例 (ch2_001.c,ch2_004.c) main(){ printf("\101 \x42 C\n"); printf("I say:\"How are you?\"\n"); printf("\\C Program\\\n"); printf("Turbo \'C\'");}

运行结果: (屏幕显示 )A B CIsay:”How are you?”\C Program\Turbo ‘C’

例 main() { printf(“Y\b=\n”); }

运行结果:屏幕显示: =打印机输出: ¥

字符常量

Page 17: 第二章 数据描述

17

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

字符常量与字符串常量不同

定义:用双引号 (“”)括起来的字符序列存储:每个字符串尾自动 ‘加一个 \0’ 作为字符串

结束标志

h e l l o \0 “例 字符串 hello”在内存中

a a \0例 ‘ a’ “a”

“”例 空串 \0

例 : char ch; ch=“A”; 例 : char ch; ch=‘A’;

字符串常量

Page 18: 第二章 数据描述

18

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

编译程序根据变量定义为其分配指定字节的内存单元 …

...

地址

int a=1, b=-3,c;

a

b

c

2字节

2字节

2字节

地址

地址

….

..

内存

1

-3

随机数

概念:其值可以改变的量变量名与变量值变量定义的一般格式:

数据类型 变量 1[,变量 2 …, ,变量 n];

变量初始化 : 定义时赋初值例 : int a,b,c; float data;

决定分配字节数和数的表示范围

合法标识符 例 : int a=2,b,c=4; float data=3.67; char ch=‘A’; int x=1,y=1,z=1; int x=y=z=1;

变量的使用:先定义,后使用

例 1 int student; stadent=19; //Undefined symbol ‘stadent’ in function main

例 2 float a,b,c; c=a%b; //Illegal use of floating point in function main

变量定义位置:一般放在函数开头

main(){ int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%f\n”,data);}

变量定义

可执行语句

main(){ int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%f\n”,data);}

变量

Page 19: 第二章 数据描述

19

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

占字节数随机器不同而不同 ,一般占一个机器字short≤int≤long可用 sizeof(类型标识符)测量

实型变量float:占 4字节,提供 7位有效数字double:占 8字节,提供 15~16位有效数字

字符型变量字符变量存放字符 ASCII码char与 int数据间可进行算术运算

例 1: float a; a=111111.111; /* a=111111.1*/例 2: double b; b=111111.111; /* b=111111.111*/

例 a=‘D’; /* a=68; */ x=‘A’+5; /* x=65+5; */ s=‘!’+‘G’ /* s=33+71; */

没有字符串变量,用字符数组存放

整型变量

Page 20: 第二章 数据描述

20

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

/*ch2_003.c*/ #define PRICE 12.5 main() { int num=3; float total; char ch1,ch2=‘D’;

total=num*PRICE; ch1=ch2-‘A’+‘a’; printf(“total=%f,ch1=%c\n”,total,ch1); }

宏定义

变量定义

输出结果

运行结果:total=37.500000, ch1=d

例子

Page 21: 第二章 数据描述

21

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

隐式转换什么情况下发生

运算转换 ------不同类型数据混合运算时 赋值转换 ------把一个值赋给与其类型不同的变量时 输出转换 ------输出时转换成指定的输出格式 函数调用转换 ------实参与形参类型不一致时转换

运算转换规则 :不同类型数据运算时先自动转换成同一类型

2.3不同类型数据间的转换

Page 22: 第二章 数据描述

22

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

double float

long

unsigned

int char,short低

高 说明 :

必定的转换

运算对象类型不同时转换

char ch; int i; float f; double d;

ch/i + f*d - (f+i)int

int

double

double

double

double

double

double

int

int

double

double

double

double

double

double

10+‘a’ +i*f - d/l

例 2 int i; float f; double d; long l;

例 1

Page 23: 第二章 数据描述

23

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

一般形式:(类型名)(表达式) 例 : (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,

原变量类型不变 例 main()

{ float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); }结果: x=3.600000,i=3

较高类型向较低类型转换时可能发生

精度损失问题

显式转换(强制转换)

Page 24: 第二章 数据描述

24

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

C运算符

算术运算符:(+ - * / % ++ --)关系运算符:(< <= == > >= !=)

逻辑运算符:((! && ||) 位运算符 :(<< >> ~ | ^ &)

赋值运算符:(= 及其扩展)条件运算符:( ?:)逗号运算符:( ,)指针运算符:( * &)

求字节数 :( sizeof)强制类型转换:(类型)分量运算符:( . ->)下标运算符:( [])

其它 :( ( ) -)

2.4 运算符和表达式

Page 25: 第二章 数据描述

25

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

运算符功能与运算量关系要求运算量个数要求运算量类型

运算符优先级别结合方向结果的类型

学习运算符应注意

Page 26: 第二章 数据描述

26

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

基本算术运算符: + - * / %结合方向:从左向右

优先级: - ---->* / % -----> + - (2) (3) (4)

说明:“-”可为单目运算符时 ,右结合性两整数相除,结果为整数%要求两侧均为整型数据

例 5/2 = -5/2.0 =

例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2

算术运算符和表达式

2-2.5

1-110

()

Page 27: 第二章 数据描述

27

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

作用:使变量值加 1或减 1种类:

前置 ++i, --i (先执行 i+1或 i-1,再使用 i值) 后置 i++,i-- (先使用 i值 ,再执行 i+1或 i-1)

例 j=3; k=++j; j=3; k=j++; j=3; printf(“%d”,++j); j=3; printf(“%d”,j++); a=3;b=5;c=(++a)*b; a=3;b=5;c=(a++)*b;

//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4

自增、自减运算符 ++ --

Page 28: 第二章 数据描述

28

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

作用:使变量值加 1或减 1种类:

前置 ++i, --i (先执行 i+1或 i-1,再使用 i值)

后置 i++,i-- (先使用 i值 ,再执行 i+1或 i-1)

说明:++ -- 不能用于常量和表达式 ,如 5++, (a+b)++++ -- 结合方向: 自右向左优先级: - ++ -- ------>* / % ----->+ - (2) (3) (4)

例 -i++ -(i++) i=3; printf(“%d”,-i++); //-3 例 j+++k; (j++)+k; 例 -i++ i=3; printf(“%d”,-i++);

自增、自减运算符 ++ --

Page 29: 第二章 数据描述

29

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

简单赋值运算符 符号: = 格式: 变量标识符 =表达式

作用:将一个数据(常量或表达式)赋给一个变量

复合赋值运算符种类: += -= *= /= %= 《 = 》 = &= ^= |=

含义: exp1 op= exp2 exp1 = exp1 op exp2

a+=3 a=a+3

x*=y+8 x=x*(y+8)

x%=3 x=x%3

例 a=3; d=func(); c=d+2;

赋值运算符和表达式

Page 30: 第二章 数据描述

30

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

结合方向:自右向左优先级 : 14左侧必须是变量,不能是常量或表达式

赋值表达式的值与变量值相等 ,且可嵌套

赋值转换规则 :使赋值号右边表达式值自动转换成其左边变量的类型

例 3=x-2*y; a+b=3;

例 float f; int i; i=10; f=i;则 f=10.0

例 int i; i=2.56; //结果 i=2;

例 : a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)

//表达式值为 5, a,b,c值为 5// b=5;a=5//表达式值 11, c=6,a=11//表达式值 10, a=10,b=4,c=6//表达式值 5, a=5,b=10,c=2

说明( 1):

Page 31: 第二章 数据描述

31

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

结合方向:自右向左 优先级 : 12 左侧必须是变量,不能是常量或表达式

赋值表达式的值与变量值相等 ,且可嵌套

赋值转换规则 :使赋值号右边表达式值自动转换成其左边变量的类型

例 : a=12; a+=a-=a*a

例 : int a=2; a%=4-1; a+=a*=a-=a*=3;

//a=-264 等价于 a=a+(a=a-(a*a))

//a=0 等价于 a=a+(a=a*(a=a-(a=a*3)))

说明( 2) :

Page 32: 第二章 数据描述

32

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

形式:表达式 1,表达式 2,……表达式 n结合性 :从左向右优先级 : 15逗号表达式的值:等于表达式 n的值用途:常用于循环 for语句中

例 a=3*5,a*4 a=3*5,a*4,a+5

例 x=(a=3,6*3) x=a=3,6*a

例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);

//a=15,表达式值 60//a=15,表达式值 20

//赋值表达式,表达式值 18, x=18//逗号表达式 ,表达式值 18,x=3

//1,2,3//3,2,3

逗号运算符和表达式

例 :/*ch2_6.c*/#include <stdio.h>main(){ int x,y=7; float z=4; x=(y=y+6,y/z); printf("x=%d\n",x);}

运行结果: x=3

Page 33: 第二章 数据描述

33

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

关系运算符种类:< <= == >= > !=结合方向:自左向右优先级别:

<<=>>===!=

优先级 6(高)

优先级 7(低) 例 c>a+b //c>(a+b)

a>b!=c //(a>b)!=c a==b<c //a==(b<c) a=b>c //a=(b>c)

“ ” “ ”关系表达式的值:是逻辑值 真 或 假 ,用 1和0表示

例 int a=3,b=2,c=1,d,f; a>b (a>b)==c b+c<a d=a>b f=a>b>c

//表达式值 1

//表达式值 1//表达式值 0

//d=1

//f=0

关系运算符和表达式

Page 34: 第二章 数据描述

34

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

例 若 a=0; b=0.5; x=0.3; 则 a<=x<=b 的值为 0

例 5>2>7>8在 C中是允许的, 值为 0

例 int i=1, j=7,a; a=i+(j%4!=0); 则 a=2

‘例 a’>0 结果为 ‘A’>100 结果为

1

0

关系运算注意( 1)

Page 35: 第二章 数据描述

35

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

“例 注意区分 =” “与 ==” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);

例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0==1.0 结果为

可改写为: fabs(1.0/3.0*3.0-1.0)<1e-60

关系运算注意( 2)

Page 36: 第二章 数据描述

36

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

a b !a !b a&&b a||b真

假假假

逻辑运算符 种类: ! && ||

逻辑运算真值表

C语言中 ,运算量 : 0 “ ”表示 假 , 非 0 “ ”表示 真 , 运算结果 : 0 “ ”表示 假 , 1 “ ”表示 真 ,

真真

假真

逻辑运算符和表达式( 1)

Page 37: 第二章 数据描述

37

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

! (2)

&& (11)

|| (12)

例 a<=x && x<=b a>b&&x>y a==b||x==y !a||a>b

优先级: 结合方向:

! :从右向左

&& :从左向右

|| :从左向右

// (a<=x) && (x<=b) //(a>b)&&(x>y)

//(a==b)||(x==y)//(!a)||(a>b)

逻辑运算符和表达式( 2)

Page 38: 第二章 数据描述

38

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

! (2)

&& (11)

|| (12)

优先级: 结合方向:

! :从右向左

&& :从左向右

|| :从左向右

例 a=4;b=5; !a a&&b a||b !a||b 4&&0||2 5>3&&2||8<4-!0 ‘c’&&‘d’

值为 1值为 0

值为 1

值为 1

值为 1

值为 1

//(5>3)&&2||(8<(4-(!0))) 值为 1

逻辑运算符和表达式( 3)

Page 39: 第二章 数据描述

39

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

! (2)

&& (11)

|| (12)

优先级: 结合方向:! :从右向左

&& :从左向右

|| :从左向右

短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符

< >

例 a&&b&&c //只在 a为真时,才判别 b的值; 只在 a、 b都为真时,才判

别 c的值 例 a||b||c //只在 a为假时,才判别 b的值;

只在 a、 b都为假时,才判 别 c的值 例 a=1;b=2;c=3;d=4;m=1;n=1;

(m=a>b)&&(n=c>d)

//结果 m=0,n=1

逻辑运算符和表达式( 4)

Page 40: 第二章 数据描述

40

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

一般形式: expr1 ? expr2 : expr3执行过程功能:相当于条件语句,但不能取代一般 if语句 例 if (a>b)

printf(“%d”,a); else printf(“%d”,b);

printf(“%d”,a>b?a:b); 例 求 a+|b|

printf(“a+|b|=%d\n”,b>0?a+b:a-b);

expr1

取 expr2值 取 expr3值

非 0 =0

例 (a==b)?’Y’:’N’ (x%2==1)?1:0 (x>=0)?x:-x (c>=‘a’ && c<=‘z’)?c-’a’+’A’:c

条件运算符可嵌套 如 x>0?1:(x<0?-1:0)优先级 : 13结合方向:自右向左 如 a>b?a:c>d?c:d a>b?a:(c>d?c:d)expr1、 expr2、 expr3类型可不同,表达式值取较高的类型

例 x?‘a’:‘b’ //x=0, ‘表达式值为 b’; x‡0, ‘表达式值为 a’ x>y?1:1.5 //x>y ,值为 1.0; x<y ,值为 1.5

条件运算符与表达式

Page 41: 第二章 数据描述

41

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

01 11 11 11 11 11 11 11int型: 最大 :32767

10 00 00 00 00 00 00 00 最小 :-32768

11 11 11 11 11 11 11 11unsigned int型: 最大 :65535

00 00 00 00 00 00 00 00 最小 :0

条件运算符与表达式( 1)

Page 42: 第二章 数据描述

42

你现在所处的位置在:首页 C语言教学幻灯片版 第二章 数据描述

数制

表示

数码

特点

10º, 10¹, 10² …,

十进制数

0~9

10

逢十进一

二进制数

0~1

2

2º, 2¹, 2² …,

逢二进一

八进制数

0~7

8

8º, 8¹, 8² …,

逢八进一

十六进制数

0~9,A~F,a~f

16

16º, 16¹, 16² …,

逢十六进一

十进制: 4956= 410³+910² +510¹+610º二进制: 1011=12³+02² +12¹+12º十六进制: 81AE=816³+116² +1016¹+1416º八进制: 4275=48³+28² +78¹+58º

条件运算符与表达式( 2)