您好,欢迎访问三七文档
C语言基础C/C++程序设计2C程序的基本结构(复习)【例】计算并输出一个数a的平方。#includestdio.hmain(){floata,b;a=5.2;b=a*a;printf(b=%f\n,b);}main为函数名程序从这里开始运行函数体开始函数体结束函数体内定义a,b为a赋值计算并输出平方值b执行程序的输出结果为:b=27.0399973数据类型(复习)【例】计算圆的面积,半径为5cm。程序如下:main(){floatr,area;r=5;area=3.14*r*r;printf(%f\n,area);}运算结果是输出圆的面积:78.500000程序中用到的数据:r、area、5、3.14对数据进行的运算:*、=4C语言的数据类型C数据类型数组类型结构体类型共用体类型枚举类型整型字符型实型(浮点型)空类型单精度型双精度型基本类型指针类型构造类型52.2.1整型数据1.整型数据的类型–基本整型数据int,分配2Byte–短整型数据shortint,分配2Byte–长整型数据longint,分配4Byte–无符号型,存储单元中全部二进位(bit)用作存放数本身,而不包括符号。整型数据均以二进制补码形式存储111110000111111162.2.2实型数据2.实型数据的类型C实型变量分为单精度(float型)和双精度(double型)两类,对每一个实型变量都应在使用前加以定义。如:floatx,y;(指定x,y为单精度实数)doublez;(指定z为双精度实数)在一般系统中,一个float型数据在内存中占4个字节(32位)·一个double型数据占8个字节。单精度实数提供7位有效数字,双精度实数提供15~16位有效数字。72.2.3字符型数据字符型数据char,分配1Byte字符型数据是指字母、数字、各种符号等用ASCII值表示的字符例如'a'是一个char类型数据,称作字符常量2.2.4空类型空类型void通常与指针或函数结合使用82.3常量、变量与标准函数主要内容:–常量–变量–标准库函数92.3.1常量在运行程序的过程中值保持不变的量1.整型常量–十进制:0~9–八进制:0~7,以0开头–十六进制:0~9,A~F/a~f,以0x或0X开头main(){inta=0123;b=0x123;printf(“a=%d,b=%d”,a,b);}101.整型常量整型常量的类型:–根据值大小默认类型。–整型常量后面加l或L,则认为是longint型例如:123L、0L、432l、0x100l注意:十六进制常量中可以使用大写字母A~F,也可以使用小写字母a~f。八进制常量中不能出现数字8或9例如:018、0921非法112.实型常量–十进制形式1.01.+12.0-12.00.0–指数形式1e31.8e-3-123E-6-.1E-3等价于:1×1031.8×10-3-123×10-6-0.1×10-3123.字符型常量可视字符常量–单引号括起来的单个可视字符例如:'a'、'A'、'+'、'3'、''等转义字符常量–单引号括起来的\与可视字符组合,例如:字符形式功能\n换行\t横向跳格(即跳到下一个输出区-占8列)\v竖向跳格\b退格(不换行)\r回车\f走纸换页\\反斜杠字符“\”\’单引号(撤号)字符\dddl到3位8进制数所代表的字符\xdd1到2位16进制数所代表的字符13voidmain(){printf(“abc\tde\rf\tg\n”);printf(h\ti\b\bjk);}程序运行时在打印机上得到以下结果:fabcgdehjik注意在显示屏上最后看到的结果与上述打印结果不同,是:fgdehjk14字符变量的定义形式如下:charc1,c2;它表示c1和c2为字符型变量,各可以放一个字符,因此可以用下面语句对c1、c2赋值:c1=‘a’;c2=‘b’;一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,·而是将该字符的相应的ASCII代码放到存储单元中。例如字符‘a’的ASCII代码为97,‘b’为98,c1c29798011000010110001015【例】voidmain(){charc1,c2;c1=97;c2=98;printf(%c%c,c1,c2);}c1、c2被指定为字符变量。但在第3行中,将整数97和98分别赋给c1和c2,它的作用相当于以下两个赋值语句:c1='a';c2='b'程序输出:ab164.字符串常量用双引号括起的一个字符序列–例如:ABC、123、a、\n\t\nGoodmorning字符串常量的长度:–所包含的字符个数字符串常量的存储方式:\nGoodmorning\0a\0所占存储单元数:串长度+1例如:字符串结束标记172.3.2变量1.变量的有关概念在程序运行过程中,其值改变的数据,称为变量,变量用标识符表示,称为变量名。变量必须“先定义后使用”系统为变量分配存储单元,存储变量的值。编写程序时通过变量名来存、取变量值。a510变量值为变量分配的存储单元变量名例如:有变量a它的值是510182.变量定义变量定义的一般格式:数据类型说明符变量列表;例如:inti,j;longk,m;floatx,y;charch1,ch2;•必须使用合法的标识符作变量名•不能使用关键字为变量命名193.变量的初始化:允许在说明变量的时候对变量赋初值。例如:inta=5,b=10+2;doublex=23.568,y;charch1='a',ch2=66,ch3='\142‘;表示定义变量并对变量存储单元赋值。错误的初始化:inta=3+b,b=5;floatm=n=23.16;20main(){inta,b,c,d;/*指定a,b,c,d为整型变量*/unsignedu;/*指定u为无符号整型变量*/a=12;b=-24;u=10;c=a+u;d=b+u;printf(a+u=%db+u=%d,c,d);}运行结果为a+u=22b+u=-14可以看到不同种类的整型数据可以进行算术运算。在本例中是int型数据与unsignedint型数据进行相加相减运算。212.3.3标准库函数由C编译系统定义的一种函数,存放在系统函数库中,用户可以根据需要随时调用常用函数如:printf、scanf、fabs、sqrt、sin、(常用数学函数参见教材)函数调用形式:函数名([参数表])例如:putchar('a')sqrt(x)232.4运算符一、运算符简介按运算类型分类1.算术运算符2.关系运算符3.逻辑运算符4.位运算符5.赋值与赋值组合运算符6.自增自减运算符7.条件运算8.指针运算9.其它运算符按运算对象的数目分类◆单目运算◆双目运算◆三目运算24运算符-算术运算一、算术运算符运算符(双目运算符/单目运算符)+加法运算-减法运算*乘法运算/除法运算%求余运算优先级:*/%同级(高),+-同级(低)结合性:相同优先级运算符进行运算时的次序自左向右(标记为→)25运算符-算术运算实例1.参加运算的对象都是int型,结果截取为int型10/311/310.0/311/3.1/21./210/5*310/(5*3)2.求余运算的对象必须是整型9%31%310%310%-3-10%3-10%-3=3=3=3.3333=3.66667=0=0.5=6=0=0=1=1=1=-1=-1注意:运算对象的数据类型对运算结果的影响26运算符-关系运算二、关系运算符运算符(双目运算符→)大于=大于等于小于=小于等于==等于!=不等于优先级:==同级(高),!===同级(低)关系运算的结果应该为逻辑型“真”或“假”C语言中没有逻辑型,将逻辑型数值化处理,用整型1表示“真”,用整型0表示“假”。27运算符-关系运算实例实例关系表达式75的值是1,57的值是0。已知:inta=13,b=2,c=1;aba=ba!=ba==b(ab)==cab==ca-b==c成立,结果为1不成立,结果为0成立,结果为1不成立,结果为0结果为1与上面等价,结果为1等价于(a-b)==1,结果为0如何判断数学中的逻辑关系:0≤a≤9?0=a=9等价于(0=a)=9结果恒为128运算符-逻辑运算三、逻辑运算符运算符&&逻辑与(双目)(→)¦¦逻辑或(双目)(→)!逻辑非(单目)(←)逻辑运算真值表ab!a!ba&&ba||b110011100101011001001100逻辑运算关系29运算符-逻辑运算式2(y¦¦b)&&(y¦¦a)1结果2结果例:要判断0≤x≤9是否成立:(0=x)&&(x=9)如果没有括号:0=x&&x=9等价结果结果实例:比较下列两个逻辑表达式的执行过程式1y¦¦b&&y¦¦a30运算符-位运算四、位运算符运算符按位右移(双目)(→)按位左移(双目)(→)&按位与(双目)(→)∧按位异或(双目)(→)¦按位或(双目)(→)~按位反(单目)(←)真值表aba∧b~a~b0001101110101011100031实例:已知:intx=7,y=10,z=1;设字长为8位x&y=x&z=x¦y=y¦z=x^y=~x=–x=x2=y2=x2=2(00000111&00001010=0010)1(00000111&00000001=0001)15(00000111¦00001010=1111)11(00001010¦00000001=1011)13(00000111^00001010=1101)–8(~00000111)=11111000–728(000001112=00011100)2(000010102=00000010)1(000001112=00000001)运算符-位运算32说明关于:右移一位=缩小1/2关于:左移一位=扩大2倍关于~:因为:~x=按位求反=求反运算求负=求补=求反+1所以:求反=求负–1~x=-x-1~7=–8~(–8)=7注意:1.位运算是对二进制的位进行运算2.只能对int型、char型和long型进行位运算运算符-位运算33运算符-自增自减运算五、自增自减运算符运算符(单目←)++自增––自减++和––为单目运算,只能作用于变量只能对int、char、long和指针变量进行运算功能:++x==x=x+1––x==x=x–1(前缀)x++==x=x+1x––==x=x–1(后缀)34运算符-自增自减运算自增(自减)有前缀和后缀之分。前缀形式:先自增(自减)再引用后缀形式:先引用再自增(自减)前缀与后缀的区别:y=++x;==x=x+1;y=x;x先加1再赋值y=x++;==y=x;x=x+1;x先赋值再加135运算符-自增自减运算实例实例(1)++i;i++;因为在表达式中没有其它运算,结果一样。(2)x=1;y=++x;结果:x=2,y=2y=++x;==x=x+1;y=x;在做赋值运算之前,x先加1,然后将x赋给y(3)x=1;y=x++;结果:x=2,y=1y=x++;==y=x;x=x+1;先将x赋值给y,然后x再加1361.++和––运算法只能用于变量,不得用于常量和表达式.如:5++,(a+b)++均为不合法.几点注意:372.++,––,的结合性为从右至左,而一般算术运算符为从左至右。如:–i++–和++为同一优先级.–i++相当于–(i++)例:#includestdio.hmain(){inti=3,j;j=-i++;printf(i=%d,j=%d\n,i,j);}运行结果:i=4,j=-3381.要慎用++、––运算符。有关表达式使用中的问题说明对于表达式(i++)+(i++)+(i++);我们可能会认为应从左至右:3+4+5=12例:#includestd
本文标题:c语言数据类型解析
链接地址:https://www.777doc.com/doc-4120350 .html