C语言之第三章数据类型,运算符和表达式_第1页
C语言之第三章数据类型,运算符和表达式_第2页
C语言之第三章数据类型,运算符和表达式_第3页
C语言之第三章数据类型,运算符和表达式_第4页
C语言之第三章数据类型,运算符和表达式_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章数据类型运算符和表达式1.基本类型分为整型、实型(又称浮点型)、字符型和枚举型四种。2.构造类型分为数组类型、结构体类型和共用体类型三种。3.指针类型4.空类型3.1C语言数据类型基本数据类型:整型实型字符型

数据类型都会通过字节数规定所表示的值的范围(大小);但一般来说,与机器相关。本章将介绍:3.2常量和变量1.常量程序运行中、其值不变的量。2、变量程序运行中、其值可变的量。变量的两个要素(1)变量名(2)变量值:在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。如:inta=3;变量命名原则:有字母、数字、下划线组成,第一个字符必须为、字母、下划线。注意:

1.一般长度<=8个字符。

2.区分大小写。

3.命名一般见名知意。

4.变量先定义后使用。放在声明部分。思考题:在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?类型Bit取值范围[signed]int16-32768–32767(-215-215-1)Unsignedint160–65535(0–216-1)[signed]short16-32768–32767(-215-215-1)Unsignedshort160–65535(0–216-1)Long32-2147483648-2147483647Unsignedlong320-42949672953.3整型数据

ANSI规定C中的各类整数.整型数据的溢出整型变量只能容纳-32768~32767范围内的数,遇到大于32767的数就发生“溢出”,但运行时不报错。将取值大于32767的变量定义成long型(长整型),并用%ld输出,就不会出错。例子

Li3-3C/C++环境下,int2个字节long都是4个字节.VC++环境下int

和long都是4个字节

3.4实型数据实数的表示有定点型和浮点型(概念)。在计算机上,基本上都以浮点形式表示。C语言有三种类型的实数(后三列为参考值):类型Bits有效数字范围float326-710-38-1038double6415-1610-308-10308Longdouble12818-1910-4932-104932实数在内存中的存储形式+

.3141591数符尾数(小数部分)表示数的精度阶码(指数)表示数的范围表示=3.14159=0.314159101在标准C(ANSIC)中,并没有规定尾数(小数部分)有几位,阶码(指数)有几位,甚至总的字节数也没规定,这一切与具体的编译系统有关。一般尾数24位(含符号),指数8位。尾数为越多,精度越高。实数型变量的声明举例

floatf;doubled,e;longdoublet;

分别定义f为单精度浮点数,d和e为双精度浮点数,t为长双精度浮点数。

例子li3-4VC++环境下,float有效数字7位.double有效数字16位.实数的常量表示实型常量可以加尾缀F(f)例:1.65f,64.98F实数的多种书写表示:314.159,3.14159e2都是合法的书写形式可以表示为:.720..7e24e5但在计算机上,最终会规范化为:X.XXXXXXeXX

的形式,输出也以这种形式表示,即小数点左边有一位非0值。复习:数据类型整型实型字符型3.5字符类型(Char)1、字符型常量的表示

由单引号直接表示:‘a’,‘A’,‘6’,‘#’等由1到3位8进制数表示。(了解)例:‘\101’代表ASCII值为65的A通过换码序列(转义字符)表示,见P48(切记转义字符的含义)例:‘\n’表示换行,ASCII值10也表示换行。分析下面程序,写出运行结果。Xt3_6.cpp#include<stdio.h>voidmain(){charc1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);

printf("\t\b%c%c\n",c4,c5);}2、字符变量的表示如:charc1,c2;c1=’a’;c2=’b’;c1的

ASCII码为

97,c2的

ASCII码为

98

c1:01100001

c2:01100010例:voidmain(){charch1,ch2;ch1='a';ch2='b';printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

printf(“ch1=%d,ch2=%d\n”,ch1,ch2);

}

结论:0—127之间字符型数据与整型数据通用。允许二者运算。程序运行结果:

ch1=a,ch2=b

ch1=97,ch2=98

p364附录A,常用字符与ASCII码表。如果要显示一些特殊字符,可把对应ASCII的值用字符类型输出。#include<stdio.h>intmain(){ inta=14;

intb=15;

intk=1;

printf("%c%c%c%c\n",a,a,a,a);

printf("%c%c%c%c\n",b,b,b,a);

printf("%c%c%c%c\n",k,k,k,k); return0;}思考:运行结果?为什么?3、字符串常量字符串常量是用一对双引号括起来的字符序列。字符常量与字符串不同:‘a’是字符常量,“a”是字符串。例如:“Howdoyoudo.”、“Goodmorning.”等,都是字符串常量。

字符串的存储C语言规定:以字符‘\0’作为字符串的结束标志。注意:在源程序中书写字符串常量时,不必加结束字符‘\0’,最后一个字符‘\0’是系统自动加上的。如果有一个字符串为“CHINA”,则它在内存中的实际存储如下所示,它占用6字节而非5字节内存空间。CHINA\03.6变量赋初值

赋值:就是将一个表达式的值直接赋给某个或某几个变量的过程,赋值号为“=”,基本形式为:变量名=表达式;

如:

inta,b,c;

intk=1;/*k的初始值为1*/

charch=‘a’;相当于:

charch;

ch=‘a’;

floatf=g=h=15.2;错误!三个变量不能同时赋初始值

3.7混合运算高

doublefloat

long

unsigned

intchar,short例:10+’a’+1.5-45.67*’b’结果为double型。

3.8运算符与表达式

1、运算符介绍:

算术运算符如+-*/

关系运算符如><=

逻辑运算符如&&||

赋值运算符如=

条件运算符如?:

逗号运算符如,

强制类型转换运算符如(类型)算术运算符

(1)算术运算符运算符含义

+加法运算符或正值运算符。如:3+5、+3

-减法运算符或符值运算符。如:5-3、-7*乘法运算符。如3*9

/除法运算符。如5/3

%模运算符或求余运算符。如:7%4=3整数相除说明

整数相除结果,舍区去小数部分得整数23。如:8/3=2如运算数据有负数,舍入小数一般“向零取整”。如:-5/3=-1

(2)算术表达式及运算符优先级先乘除取模后加减括号优先同优先级:左右(见附录3)例1.6*12/4-1.5+’a’113.500000例2.(2+4)*6/(1+2)12.000000(3)强制类型转换将一个表达式转换成所需要的类型,格式为:

(类型)(表达式)例子:

(float)(5%3)/*将余数转化为浮点数*/注意:(1)表达式用括号括起来。如(int)x+y只将x转换为整型,然后与y相加。(2)强制类型转换并不改变表达式自身的类型,而是将转换后的结果放在一个看不见的临时存储单元中,以后表达式的类型仍将恢复为原来类型。在上例中,a和(5%3)的类型仍然保持不变。例

强制类型转换voidmain(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}运行结果如下:x=3.600000,i=3X的类型仍为float型.练习:求表达式的值(1)设x=2.5a=7y=4.7

求x+a%3*(int)(x+y)%2/4(2)设a=2b=3x=3.5y=2.5(float)(a+b)/2+(int)x%(int)y答案(1)2.5(2)3.5(4)自增、自减运算符

++i,--i先增减、后运算

i++,i--先运算、后增减如i=3看下面赋值语句:(1)j=++i;/*i值先为4,再赋给j,j为4。*/(2)j=i++;/*i值先赋给j,j为3,再变为4。*/说明:j=j+1;等同于j++;或者++j;它们都可以作为单独的语句出现增1(减1)只能用于变量。不能用于常量或表达式。如++5或(a+b)++是不合法的。3.9赋值运算符与赋值表达式1、赋值运算符“=”作用:将一个数据或表达式的值赋给一个变量。

如:

a=3;/*把常量3赋给变量a*/

y=4;y=y+1;/*y值在原来基础上加1,再赋给y*/2、赋值时的类型自动转换实型数赋给整型数,自动去掉小数部分整形数赋给实型数,值不变,转化为小数形式double型赋给实型,只取前7位字符型赋给整型,放到整型的低8位,且:如果为无符号型赋值,高8位置0如果为有符号型赋值,高8位取符号值(0/1)3、复合的赋值运算符有些运算符可以放在赋值号=之前,共同构成复合运算。例:

a+=3//等价于a=a+3

a*=x+y//等价于a=a*(x+y)a%=y+3//等价于a=a%(y+3)复合赋值运算有:

+=,-=,*=,/=,%=算术运算<<=,>>=,&=,^=,|=位运算练习:已知:a=12求:a*=2+3求:a/=a+a答案60

04、赋值与复合赋值的综合运用赋值运算按从右到左的顺序进行:

a=(b=5);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论