C语言程序设计 教学课件 作者 何钦铭 c2.ppt
(65页)
本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!
9.90 积分
Chap 2 基本数据类型和表达式数据类型基本数据类型整型int实型(浮点型)float double字符型char构造数据类型数组、结构、联合、枚举指针类型空类型对数据的操作-运算运算符和表达式Chap 2 基本数据类型和表达式常量和变量整数类型实数类型字符类型表达式数据的存储和类型转换2.1 常量和变量2.1.1 常量常量(常数):数据123 (整型) 4.56 (实型) ’A’ (字符型)符号常量:用标识符表示的常量数据:PI:EPS通常用大写字母例2-1 求球的表面积和体积# include void main( ){ float r, s, v; scanf("%f", &r); s=4.0*3.14*r*r ; v=4.0/3.0*3.14*r*r*r ; printf("s=%f, v=%f\n", s, v);}s=4.0*3.14159*r*r ; v=4.0/3.0*3.14159*r*r*r ; 例2-2 符号常量# define PI 3.14# include void main( ){ float r, s, v; scanf("%f", &r); s=4.0*PI*r*r ; v=4.0/3.0*PI*r*r*r ; printf("s=%f, v=%f\n", s, v);}# define PI 3.14159 2.1.2 变量C语言中的量常量(常数):数据符号常量:用标识符表示的常量数据在程序的运行过程中,其值不能被改变变量:存放数据的工作单元在程序的运行过程中,其值可以改变变量的定义变量定义的一般形式 类型名 变量表;变量名:小写字母,见名知义类型名:整型int实型(浮点型)float double字符型char变量的定义int i, j, k; (定义i, j, k为整型变量)char c; (定义c为字符型变量)float x, y;double area, length;变量名代表内存中的一个存储单元用于存放该变量的值该存储单元的大小由变量的数据类型决定变量的定义与使用变量必须 先定义,后使用。# include void main( ){ int x, y; x = 3; y = x*x ; printf(“%d”, y ) ;}一个变量名只能定义一次。 变量一般都定义在程序的头上,不能定义在程序的中间或后面。变量的使用变量: 先定义,后使用 先赋值,后引用# include void main( ){ int x, y; x = 3; y = x*x ; printf(“%d”, y ) ;}变量的赋值赋初值:在定义变量时对它赋值 int a = 5, b = 3;赋值表达式:int a, b;a = 5;b=3;输入函数: scanf(“%d%d”, &a, &b);2.2 整数类型2.2.1 整型常量(整数)三种表现形式十进制整数:正、负号,0-9,首位不是0例:10,123八进制整数:正、负号,0-7,首位是0例:010,012316进制整数:正、负号,0-9,a-f,A-F,前缀是0x,0X例:0x10,0x123123 = 1111011 (B) 二进制 =173 (O) 八进制 =7B (X) 十六进制int i=0173;int j=0x7b;int k=123;例:16 020 0x10 10 012 0XA2.2.2 整型变量int ai, bi, ci, di = 0;ai = 1;bi = -27;ci = 012;整型变量的值是整数,它的取值范围有限最小取值范围 [-32768,32767]2.2.3 整型数据的输入输出printf(格式控制, 输出参数1, ... , 输出参数n);scanf(格式控制, 输入参数1, ... , 输入参数n);格式控制说明 %… %d:以十进制形式输入、输出整数 %o:以八进制形式输入、输出整数 %x:以十六进制形式输入、输出整数 例2-3# include void main( ){ printf("%d, %o, %x\n", 10, 10, 10); printf("%d, %d, %d\n", 10, 010, 0x10); printf("%d, %x\n", 012, 012); } 运行结果为: 10, 12, a 10, 8, 16 10, a0……01010例2-4# include void main( ){ int a, b; scanf("%o%d", &a, &b); printf("%d%5d\n", a, b); printf("%x, %d\n", a, b); } 输入:17 17运行结果为:15 17f, 172.3 实型数据2.3.1 实型常量(实数)浮点表示:0.123 123.4 1.科学计数法:123e4 0.2e-12.3.2 实型变量单精度浮点型float x, y, z;双精度浮点型double u, v, w;4字节存储8字节存储数据精度和取值范围 数据精度 取值范围单精度 七位有效数字 ±(10-38 - 1038)双精度 十六位有效数字 ±(10308 - 10308 ) 数据精度 与 取值范围是两个不同的概念: float x = 1.23456789; float y = 123456789; 虽在数据表示范围内,但无法精确表达。 float z = 1.2e55 z的精度要求不高,但数据表示范围超出。并不是所有的实数都能在计算机中精确表示。 实型常量的类型都是doublex=1.234568y=1.234567e82.3.3 实型数据的输入和输出输出 printf( )float 和double使用相同的格式控制说明%f:以小数形式输。省略部分。0 0000 0000 0001 0 0000 0000 0000 0000 -1 1111 1111 1111 1111 -2 1111 1111 1111 1110 …… -32767 1000 0000 0000 0001 -32768 1000 0000 0000 000032768 = 32767+11000 0000 0000 0000 = -32768-32769 = -32768-10111 1111 1111 1111 = 32767实型和字符型数据的存储实型数据的存储-1.2345e+02符号位 阶码 尾数字符型数据的存储一个字节存储ASCII码2.6.2 整数类型的扩展有符号 无符号 数据长度int unsigned [int] 16或32short [int] unsigned short [int] 16long [int] unsigned long [int] 32无符号 unsigned设整数占2个字节0000 0000 0000 0000 01111 1111 1111 1111 65535(216-1)整数类型的最小取值范围int -32768~32767 (-215~215-1)short [int]long [int] -2147483648~ 2147483647 (-231~231-1)unsigned [int] 0~65535 (0~216-1)unsigned short [int] unsigned long [int] 0~4294967295 (0~232-1)整型常量的表示不能超出整型数据的取值范围比长整型数还要大的数只能用实数来表示整型常量的类型整数后的字母后缀123L long123U unsigned123LU unsigned long数值整型数据的输入输出printf(格式控制, 输出参数1, ... , 输出参数n);scanf(格式控制, 输入参数1, ... , 输入参数n);格式控制说明 %… 十进制 八进制 十六进制int %d %o %xlong %ld %lo %lxunsigned %u %o %xunsigned long %lu %lo %lx例2-19#include void main( ){ int ai; long cl; unsigned bu; unsigned long dul; ai = 32767; bu = 65535U; cl = -2147483648L; dul = 4294967295LU; printf("%d,%u,%ld,%lu\n",ai, bu, cl, dul); printf("%x,%x,%lx,%lx\n",ai, bu, cl, dul);}7fff, ffff, 80000000, ffffffff2.6.3 数据类型转换不同类型数据的混合运算类型转换自动转换强制转换运算自动类型转换(非赋值运算)水平方向:自动垂直方向:低 高 高 double float unsigned long long unsigned unsigned short 低 int char, short自动类型转换(非赋值运算)'A' + 12 – 10.05 65 77 66.95高 double float unsigned long long unsigned unsigned short 低 int char, short自动类型转换(赋值运算)变量 赋值运算符 表达式计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量将赋值运算符左侧的变量的值作为表达式的值将赋值运算符右侧表达式的类型自动转换成赋值号左侧变量的类型自动类型转换(赋值运算)double x;x = 1;x = ?short a = 1000;char b = 'A';long c = 80000;c = a + b;c = ?int ai;ai = 2.56;ai = ?int bi;bi = 0x12345678Lbi = ?例2-20# include void main( ){ long a, b, c; a=1000000L; b=1000*1000LU; c=1000*1000; printf("%ld,%ld,%ld\n", a, b, c);}运行结果为:1000000,1000000,16960 强制类型转换强制类型转换运算符(类型名) 表达式优先级同++,从右向左(double)3(int)3.8(double)(5/2)(double)5/23.032.02.5运算符优先级( )- + ++ -- (类型名)* / % + -= += -= *= /= %=,高低 关 键 词: 教学 作者 c语言 程序设计 c2
天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文