1 / 46

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

第二章数据类型、 运算符、 表达式. 2.1 数据类型 程序中使用的变量必须说明其类型 不同类型的数据 在内存占用不同长度的存储空间 采用不同的 存储方式 对应不同的 取值范围 有不同的 操作集合.  C 的数据类型. 整型 实型 字符型 枚举类型. 基本类型. 数据类型. 数组 结构体类型 共用体类型. 构造 类 型(派生类型). 指针类型. 空类型void.  C 的 基本 数据类型. 整型 int 实型 字符型 char. float 、 double. 类型修饰符

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章数据类型、运算符、表达式 2.1 数据类型 • 程序中使用的变量必须说明其类型 不同类型的数据 在内存占用不同长度的存储空间 采用不同的存储方式 对应不同的取值范围 有不同的操作集合

  2. C的数据类型 整型 实型 字符型 枚举类型 基本类型 数据类型 数组 结构体类型 共用体类型 构造类型(派生类型) 指针类型 空类型void

  3. C的基本数据类型 整型 int 实型 字符型 char float、double 类型修饰符 signed unsigned short long

  4. 2.2 常量与变量 什么是常量,什么是变量?常量有哪两种? 一、直接常量与符号常量 字面常量宏常量 #define PRICE30 int main( ) { int num, total; num=10; total=num*PRICE; printf("total=%d",total); return 0; } 值不会改变的数据----常量

  5. #define RADIU 3 #define PI 3.1415926int main( ) { int area,length,volume; area=PI*RADIU*RADIU; length=2*PI*RADIU; volume=4*PI*RADIU*RADIU*RADIU/3; return 0; }

  6. 二、变量 变量的属性:变量的名----存储单元----编译系统分配 变量的值 1.标识符 _mode User_name xyz x+y 3abc x#y char CHAR 以字母或下划线打头 由字母、数字、下划线构成 值可能会改变的数据----变量

  7. 用户标识符 关键字 int max total 标识符 2.常变量 const int count=8; 3.使用原则: 先定义,后使用

  8. 2.3 整型数据 一、整型 整数类型: 基本型 短整型 长整型 双长整型 无符号整型 int、signed int short int、short long int、long long long int 、long long unsigned int、unsigned short unsigned long

  9. 二、整型变量的定义 变量定义的格式: 类型 标识符1[,标识符2][,标识符3]…… int main( ) {int a; int b,c,d; a=12; b=13; c=a*b; d=a+b; printf("a*b=%d,a+b=%d\n",c,d); return 0; }

  10. 三、整型常量 12、12L、32767、32790、 0x64、10、010、12u、-5 4UL 5LL 十进制数 八进制数: 以0开头的数 十六进制数:以0x开头的数

  11. 1、变量必须先定义后使用 2、定义变量的含义: 规定变量的名字(区分其他变量) 规定变量的类型(存储空间、存储方式、 取值范围、可以进行的操作) 3、变量总是有值的 没有初始化,值为不确定的数(天知道) int one; short x=6;

  12. 类型 变量

  13. sizeof运算 sizeof(表达式) sizeof(类型) 计算表达式值所属类型或者类型占用的字节数 int main() { printf("Data type Number of bytes\n"); printf("---------- ---------------------\n"); printf("char %d\n", sizeof(char)); printf("int %d\n", sizeof(int)); printf("short int %d\n", sizeof(short)); printf("long int %d\n", sizeof(long)); printf("float %d\n", sizeof(float)); printf("double %d\n", sizeof(double)); }

  14. 2.4 实型数据 一、实数类型 单精度float 4 byte 3.4E-38~3.4E+38 双精度double 8 byte 1.7E-308~1.7E+308 长双精度long double 12byte (扩展精度) 内存的存储精度不同(7~8,15~16)

  15. 二、实型常量 0.735 2.146 .5367 897. 0.735f 1.65L 十进制形式:由数字和小数点组成 小数点不能少 0.7e5 2.1e6 .5e3 89e-7 指数形式:用e表示10,e后为整数 e前数字不能少 e5 实型常数默认为double

  16. 取值范围 精度 区分 上溢出 下溢出

  17. 特殊形式(转义字符): \n 换行 \t Tab \r 回车 \b Backspace \\ 字符\ \ddd ddd为8进制 \" 字符" \xhh hh为16进制 \' 字符' \f 走纸换页 2.5 字符型数据 一、字符常量 'A''a''$''+''*''\n''\t''\'' 一般形式: 'A''a''$''+''*'

  18. 97 0 二、字符串常量 "a" "gfff\"vg" int main( ) {printf("abc\tde\rf\tg\n"); printf("h\t i\b\b jk "); }

  19. 字母 十进制 十六进制 A 65 0x41 a 97 0x61 0 48 0x30 空格 32 0x20 三、字符变量 定义: char c1,c2,ch1,cc; 存储: 97 c1= 'a';

  20. char cc,c1; cc='a'; c1=97; printf("%d is %c",c1,c1); c1=c1-32 特殊处理: 赋值 运算 输入输出

  21. 4.下列4组整型常量中,错误的一组是_____ A) xcdf 017 0xe 123 B) 160 0xffff 011 0L C) 01 32768u 0617 0x163 D) 0x48a 0205 0x0 -256 6.设char型占1字节,则unsigned char所能表示的数据范围是______ A.0~255 B) -128~127 C) 1~256 D) -128~128 7. 下列属于C语言合法的字符常数是_______ A)‘97’ B) “A”C) ‘\n’ D) “\0”

  22. 2.6常用运算符及表达式 算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 运算符 单目运算符 双目运算符 三目运算符 运算符

  23. 一、算术运算和算术表达式 2+3结果为 2*3结果为 16/4结果为 2/3、1/2结果为 20%7结果为 short x=300,y=200,t; t=x*y; 5 6 4 0 6 -5536 注意:整数运算有溢出问题! 注意:实数运算有精度问题!

  24. 1.运算符: +  * / % 2.优先级: (* / %)(+ ) 3.结合方向:从左到右 a+b-c a/b*c 优先级 aθ1bθ2c 若θ1与θ2优先级不同时θ1、θ2谁先算 结合性 aθ1bθ2c 若θ1与θ2c优先级相同时θ1、θ2谁先算

  25. 以下运算结果是什么类型的? 8/4 8.7/3 10+'a'+i*f 'a'-32 (int)(6.5+7)

  26. 4.混合运算时的类型转换 double float long unsigned int char、 short 向高看齐!

  27. 5.数学函数 p332 abs(x) fabs(x) sqrt(x) pow(x,y) exp(x) sin(x) #include<math.h>

  28. 二、赋值运算 1.赋值运算的一般形式: 变量=表达式 2.结合方向:从右到左 3.变量初始化: 4.赋新值取代旧值 x=3.14*r*r x=y=5 char c='a'; int y=6; x=5; ...... x=6; 赋值:把数值存放到某个变量指定的内存区域 引用:使用某个变量中存储的数据 在程序中,有三种情况涉及到变量:变量的定义 变量的赋值 变量的引用

  29. 变量赋值注意: 变量必须先定义后使用 变量的赋值是新值代替旧值 变量参与运算后只要没有被赋新值保持原值 变量被赋值的方法: (1)输入 (2)赋值运算(复合赋值运算) (3)自增自减运算

  30. 5.复合赋值运算 a+=b a-=b a/=b a*=b a%=b 6.赋值运算表达式 变量=表达式 赋值表达式的值就是变量的值 a=b=c=5 a=5+(c=6) a=(b=4)+(c=6) a*=c+d a+=a-=a*a int a=b=c=5;

  31. 写出运算结果 x=6 y=x=3 x+=6 x*=1+2 x-=x=10 x++; y=x++; 左值 右值

  32. 三、强制类型转换 (类型)(表达式) float y; int x; y=4.7; x=(int)y; x=(int)(y+7.5); 没有改变y的值和类型

  33. 四、自增自减运算 ++  i++ 先引用后增值 ++i 先增值后引用 y++ ++y x-- --x 优先级:与单目减相同(2) 结合方向:从右向左 注意:只能用于变量 运算顺序 -i++ (x+y)++

  34. 注意结果不同! i=3; i++; printf("%d",i); j=i++; printf("%d",j); printf("%d",i++); i=3; ++i; printf("%d",i); j=++i; printf("%d",j); printf("%d",++i); 4 4 5 4 5 6

  35. 讨论(假设所有变量初值为3): a+b=c x=x+1 m=-n++ 9 16 4,3 i++)+(i++)+(i++) (++i)+(++i)+(++i) printf("%d,%d",i,i++); i+++j

  36. 五、关系运算符 优先级 < <= > >= == != 低 关系运算符的优先级低于算术运算符 高于赋值运算符 计算c>a+b b!=c a==b a+b>=0

  37. 关系表达式 关系表达式的运算结果为逻辑真或逻辑假 C中以 1 或 非0表示逻辑真 以 0表示逻辑假 c>a+b b!=c a==b a+b>=0

  38. 六、逻辑运算符 ! 逻辑非 && 逻辑与 || 逻辑或 优先级 逻辑表达式 age>70 ||age<10 a!=0&&b*b-4*a*c>=0 a+b>c && a+c>b && b+c>a

  39. 七、逗号运算符和逗号表达式 逗号表达式的一般形式: 表达式1,表达式2 先计算表达式1的值,再计算表达式2的值 以表达式2的值为整个表达式的值 优先级最低 可扩展为: 表达式1,表达式2,表达式3…… a=3*5,a*4 (a=3*5,a*4),a+5 x=(a=3,6*3) x=a=3,6*a

  40. 逗号表达式的作用是在一个表达式中计算多个表达式的值,给多个变量赋值。逗号表达式的作用是在一个表达式中计算多个表达式的值,给多个变量赋值。 t=a, a=b, b=t i=1,j=2,k=3

  41. 2.7 赋值运算中的类型转换与赋值表达式 设: int i=32768; float f=5.6; double d; short s=5; char c='a'; unsigned short us=65535; unsigned char uc='b'; 计算: i=f; f=i; s=i; i=s; d=f; f=d; us=uc; uc=us;

  42. float long double = int int long = double float float x=3 double=float 舍去小数位数 超出范围则截取 int y=8.6

  43. = 00.......00 unsigned = 符号位 signed = = signed unsigned unsigned signed

  44. 12.若已定义x和y为double型,则表达式x=1,y=x+3/2的值为_____12.若已定义x和y为double型,则表达式x=1,y=x+3/2的值为_____ A) 1 B) 2 C) 2.0 D) 2.5 15.若变量已正确定义且k的的值是4,执行表达式j=k--后,j,k的值是____ A) j=4,k=4 B) j=4,k=3 C) j=3,k=4 D) j=3,k=3 17.设变量t为int型,下列选项中,不正确的赋值语句是___ A) ++t; B) n1=(n2=(n3=0)); C) k=i==1; D) a=b+c=1;

  45. float double char 1 8 -128~127 4 1.7e-308~1.7e308 3.4e-38~3.4e38 类型 符号 关键字 数的表示范围 字节数 (signed)int 4 -2147483648~2147483647 有 2 (signed)short -32768~32767 4 (signed)long -2147483648~2147483647 unsignedint 整型 2 0~4294967295 unsignedshort 2 无 0~65535 unsignedlong 4 0~4294967295 有 实型 有 字符型 有 无 0~255 1 unsigned char

  46. ++ -- (类型) * / % + - = += -= *= /= %= , 注意区分表达式的值和变量的值

More Related