版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二讲基本数据类型什么是数据类型?著名计算机科学家NikiklausWirth提出一个公式
数据结构+算法=程序
实际上结构化的程序设计可以表示为:程序=算法+数据结构+程序设计方法+语言工具和环境C的数据结构就是以数据类型的形式出现的知识要点2.1C语言的数据类型2.2数值数据的表示2.3文字数据的表示2.4变量的定义和赋值2.5
C语言类型修饰符2.6表达式中数据类型转换2.1C语言的数据类型
C语言提供的数据类型分类如下:
知识要点2.1C语言的数据类型2.2数值数据的表示2.3文字数据的表示2.4变量的定义和赋值2.5
C语言类型修饰符2.6表达式中数据类型转换2.2数值数据的表示C语言中使用的数值数据有两种:整数和浮点小数。整数
表示形式:十进制:123 456八进制:011 072十六进制:0x11 -0x32
一般整数的存储空间为2个字节,取值范围一般为
-215~215-1,即-32768~32767。如果超过这个范围,只有使用占4个字节的长整型数,即在整数后面加上一个字母L(大小写均可),此时取值范围可以扩大到-231~231-1,即-2147483648~2147483647。
C语言中使用的数值数据有两种:整数和浮点小数。浮点小数
C语言中的浮点小数描述的是实数,可以采用十进制小数形式或者指数形式表示。十进制小数形式:包含整数部分、小数点和小数部分。如1.3234.0注意:其中小数点不能省略,34与34.0不是一样的。指数形式:包含尾数部分、字母E或e和阶码。例如2.78E12。注意:尾数部分不能省、阶码必须是整数。浮点小数一般为单精度浮点类型,占用4个字节,有效位数6~7位,如果需要精度特别高,可以采用双精度浮点类型,有效位数可以达到16~17位。知识要点2.1C语言的数据类型2.2数值数据的表示2.3文字数据的表示2.4变量的定义和赋值2.5
C语言类型修饰符2.6表达式中数据类型转换2.3文字数据的表示C语言把文字数据分为两种类型:单个字符和字符串。单个字符
单个字符的表现形式是由单引号括起来的一个字符,例如:’a’
‘A’
‘+’
‘5’
‘$’。其中单引号、双引号和反斜杠的表现形式比较特殊,分别是’\’’、’\”’、’\\’。在C语言中转义字符被认为是具有特殊意义的单个字符,例如’\n’,代表一个换行符。单个字符在内存中只占用1个字节,其存储的内容为该字符在ASCII码表中对应的数值。
C语言把文字数据分为两种类型:单个字符和字符串。字符串
字符串是由双引号括起来的字符序列,例如:”thisisaprogram.”
”IloveC”
。字符串中的字符按照从左到右的顺序,依次存储在一段连续的空间里,其中每一个字符占用一个字节,其内容为该字符在ASCII码表中对应的数值。注意:C语言的字符串在实际存储时,将自动在字符串尾部加了一个结束标志‘\0’(其ASCII码值为0)。思考:‘a’
“a”
是相同的吗?无鸡鸭也可无鱼肉也可萝卜青菜不可少不得大米无鸡鸭也可,无鱼肉也可,萝卜青菜不可少,不得大米。无鸡,鸭也可,无鱼,肉也可,萝卜青菜不可,少不得大米。知识要点2.1C语言的数据类型2.2数值数据的表示2.3文字数据的表示2.4变量的定义和赋值2.5C语言类型修饰符2.6表达式中数据类型转换2.4变量的定义和赋值C语言中的数据有两种基本形式:常量和变量。常量的值是固定的,变量是可以改变的
变量的定义
类型标识符变量名;
变量在定义时要注意以下几个问题:变量的命名要符合C语言规定的标识符的命名规则,即只能由字母、数字和下划线组成,首字母必须为字母或下划线。此外C语言中规定的有特殊用途的关键字,例如int、float、if等,不能作为变量名称。
ab2stu1x1_1sum_name1正确
2acstu-1len#1elseintfloat不正确C语言中大小写是敏感的。但是习惯上,C中的变量一般用小写字母表示。变量的定义变量的数据类型决定了它的存储类型,即该变量占用的存储空间。所以定义变量类型,就是为了给该变量分配存储空间,以便存放数据。基本的变量类型及其存储空间见表2.1:
类型名称存储空间取值范围实例int整型2个字节介于-32768~32767的整数inti,j;float单精度浮点型4个字节实数,有效位数6~7位floatx;double双精度浮点型8个字节实数,有效位数15~16位doubley;char字符型1个字节ASCII码字符,或-128~127的整数charc;变量的赋值变量需要预置一个值,即赋值。赋值操作通过赋值符号“=”把右边的值赋给左边的变量:
变量名=表达式;
例如x=3;a=a+1;f=3*4+2;
注意数学中的“=”符号不同于C语言中的赋值符号“=”。其中需要注意的是:如果赋值时两侧类型不一致时,系统将会作如下处理:
将实数赋给一个整型变量时,系统自动舍弃小数部分。
将整数赋给一个浮点型变量时,系统将保持数值不变并且以浮点小数形式存储到变量中。
当字符型数据赋给一个整型变量时,不同的系统实现的情况不同,一般当该字符的ASCII值小于127时,系统将整型变量的高字节置0、低字节存放该字符的ASCII值。
变量在定义的同时也可以赋初值,称作变量的初始化。字符型变量的值可以是字符型数据、介于-128~127的整数或者转义字符。/*--------------------------------------------
程序L2_1.C功能:赋值时类型自动的转换示例。---------------------------------------------*/#include<stdio.h>main(){inta,x;floatf;a=3.9;f=12;x='A';printf("a=%d,f=%f,x=%d\n",a,f,x);}运行结果:a=3,f=12.000000,x=65/*---------------------------------------------------------------------
程序L2_2.C功能:将字符'A'赋值给字符变量的四种方法。
------------------------------------------------------------------*/
#include<stdio.h>main(){charc1,c2,c3,c4;c1='A';c2=65;c3='\101';c4='\x41';printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4);printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4);}思考:c1,c2,c3,c4加上32输出结果是什么?加上256呢?知识要点2.1C语言的数据类型2.2数值数据的表示2.3文字数据的表示2.4变量的定义和赋值2.5
C语言类型修饰符2.6表达式中数据类型转换2.5C语言类型修饰符基本类型可以带修饰性前缀,即类型修饰符,扩大C语言基本数据类型的使用范围。C语言共有4种类型修饰符:
long长型short短型
signed有符号型unsigned无符号型longint(简写为long)型的存储长度为4个字节,用于存储整数超过int型取值范围的情况。longdouble型存储长度16个字节,约24位有效数字,取值范围超过double型。有符号型signed和无符号型unsigned适用于char型、int型和long型三种类型,区别在于它们的最高位是否作为符号位。unsignedchar型取值范围0~255,unsignedint(简写为unsigned)型取值范围0~65535,unsignedlong型取值范围0~232-1。/*---------------------------------------------------------------
程序L2_3.C功能:类型修饰符long和unsigned的使用。
--------------------------------------------------------------*/
#include<stdio.h>main(){chara1,b1;unsignedchara2,b2;intx1,y1;longx2,y2;a1=127;b1=129;a2=127;b2=129;x1=32767;y1=32769;x2=32767;y2=32769;printf("a1=%d,a2=%u,b1=%d,b2=%u\n",a1,a2,b1,b2);printf("x1=%d,x2=%ld,y1=%d,y2=%ld\n",x1,x2,y1,y2);}知识要点2.1C语言的数据类型2.2数值数据的表示2.3文字数据的表示2.4变量的定义和赋值2.5
C语言类型修饰符2.6表达式中数据类型转换2.6表达式中数据类型转换自动类型转换C语言规定,不同类型的数据在参加运算前会自动转换成相同类型,再进行运算。转换的规则是:如果运算的数据有float型或double型,自动转换成double型再运算,结果为double型。如果运算的数据中无float型或double型,但是有long型,数据自动转换成long型再运算,结果为long型。其余情况为int型。doublefloatlongunsignedintchar,short高低/*------------------------------------------------
程序L2_4.C功能:自动类型转换示例。
------------------------------------------------*/#include<stdio.h>main(){floatx,y;longm,n;x=3/2+8/3;y=3.0/2+8/3.0;m=1*2*3*4*5*6*7*8*9;n=1L*2*3*4*5*6*7*8*9;printf("x=%f,y=%f,m=%ld,n=%ld\n",x,y,m,n);}结果:X=3.000000,y=4.166667,m=-30336,n=362880强制类型转换在C语言中也可以使用强制类型转换符,强迫表达式的值转换为某一特定类型。强制类型转换形式为:
(类型)表达式
强制类型转换最主要的的用途一是满足一些运算对类型的特殊要求,例如求余运算符“%”,要求运算符两侧的数据为整型,(int)2.5%3二是防止丢失整数除法中的小数部分。2.7计算机中数据的表示计算机最主要的功能是处理数据,如数值、文字、图形、图像等。而这些数据必须被转换为相应的数字编码,才能进行存储和处理。二进制、八进制、十六进制进制之间的转换二进制数在内存中的表示字符编码IEEE浮点数表示法目前已知的所有的C/C++编译器都是按照IEEE(国际电子电器工程师协会)制定的IEEE浮点数表示法来进行计算的。这种结构是一种科学表示法,用符号(正或负)、指数和尾数来表示,底数被确定为2,也就是说把一个浮点数表示为尾数乘以2的指数次方再加上符号。IEEE浮点数表示法float共计42位,折合4字节由最高到最低位分别为31、30、29、……、0位31位是符号位,1表示该数为负,0反之。30-23位,一共8位是指数位。22-0位,一共23位是尾数位。123456.0f直接将整数部转化为二进制表示:11110001001000000然后将小数点向左移,一直移到离最高位只有1位,就是最高位的1:1.11100010010000000一共移动了16位小数点每向左移一位就等于在以2为底的科学计算法表示中指数+1,所以原数就等于:1.11100010010000000*(2^16)123456.0f指数部分,一共8位,统一把十进制的整数化为二进制时,都先加上127,在这里,我们的16加上127后就变成了143,二进制表示为:1000111112345.6f这个数是正的,所以符号位是0我们按照前面讲得格式把它拼起来:01000111111100010010000000000000/*--------------------------------------------------------------------
程序L2_5.C:十进制、八进制、十六进制数据及其输出
------------------------------------------------------------------------*/
#include<stdio.h>main(){inta,b,c,m,n;a=11;b=011;c=0x11;m=65;n=97;printf("十进制11等于%d,八进制11等于%d,十六进制11等于%d,\n",a,b,c);printf("十进制八进制十六进制字符\n");printf("65%o%x%c,\n",m,m,m);printf("97%o%x%c,\n",n,n,n);}/*-----------------------------------------------------------------------------
程序L2_6.C:从键盘输入一个大写字母,输出其对应的小写字母。
-------------------------------------------------------------------------------*/#include<stdio.h>main(){charc;printf("请输入大写字母\n");scanf("%c",&c);c=c+32;/*大写字母的ASCII码加上32为其对应的小写字母*/printf("其小写字母为%c\n",c);}/*-----------------------------------------------------------------
程序L2_7.C:已知x=3.2,y=7,z=2,计算y/3*3.2-2的值。
-----------------------------------------------------------------*/#include<stdio.h>main(){floatx=3.2,s;inty=7,z=2;charc;s=y/3*3.2-2;printf("resultis%f\n",s);}/*--------------------------------------------------------------------------
程序L2_8.C:编写一个程序,用于输入一个学生的姓名、学号、英语、数学、计算机成绩,输出学生姓名、学号和平均成绩。
------------------------------------------------------------------------------*/
#include<stdio.h>main(){charname[31];/*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论