收藏 分享(赏)

C语言基础知识——数据类型和运算符.doc

上传人:gnk289057 文档编号:6837372 上传时间:2019-04-23 格式:DOC 页数:13 大小:145.50KB
下载 相关 举报
C语言基础知识——数据类型和运算符.doc_第1页
第1页 / 共13页
C语言基础知识——数据类型和运算符.doc_第2页
第2页 / 共13页
C语言基础知识——数据类型和运算符.doc_第3页
第3页 / 共13页
C语言基础知识——数据类型和运算符.doc_第4页
第4页 / 共13页
C语言基础知识——数据类型和运算符.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、C 语言慨述1.标识符C 规定,标识符只能是字母、数字、下划线组成的字符串,并且其第一个字符必须是字母或下划线。在使用标识符时还必须注意以下几点:(1)标准 C 不限制标识符的长度,但它受各种版本的 C 语言编译系统限制,同时也受到具体机器的限制。例如在某版本 C 中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。(2)在标识符中,大小写是有区别的。例如 BOOK 和 book 是两个不同的标识符。(3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便阅读理解,作到“顾名思义” 。(4)简而言之,标识符就是一个名字2.关键

2、字关键字是由语言规定的具有特定意义的字符串,通常也称为保留字。用户定义的标识符不应与关键字相同。C 语言的关键字分为以下几类:C 语言中的关键字整型变量的说明变量的一般形式为: 类型说明符 变量名标识符,变量名标识符例如:int a,b,c; (a,b,c 为整型变量)long x,y; (x,y 为长整型变量)unsigned p,q; (p,q 为无符号整型变量)在书写变量说明时,应注意以下几点:(1)允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。(2)最后一个变量名之后必须以“ ;”号结尾。(3)变量说明必须放在变量使用

3、之前。一般放在函数体的开头部分。实型也称为浮点型。实型常量也称为实数或者浮点数。在语言中,实数只采用十进制。它有二种形式:十进制数形式指数形式1.十进制数形式由数码 0 9 和小数点组成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230 等均为合法的实数 。2.指数形式auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch

4、 typedef union unsigned voidvolatile while由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。注意:字母 e (E)之前必须有数字,且 e 后面的指数必须为整数实型变量实型变量分为两类:实型变量说明的格式和书写规则与整型相同。例如: float x, y; (x,y 为单精度实型量)double a, b, c; (a,b,c 为双精度实型量)实型常数不分单、双精度,都按双精度 double 型处理。#includemain()float a=33333.33333;double b=33333.33333333333333;p

5、rintf(“%fn%fn”,a,b);从本例可以看出,a 是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。b 是双精度型,有效位为十六位。但 Turbo C 规定小数后最多保留六位,其余部分四舍五入。3.字符型量包括字符常量和字符变量(1)字符常量:字符常量是用单引号括起来的一个字符。例如a,b,=,+,?都是合法字符常量。在 C 语言中,字符常量有以下特点: (1)字符常量只能用单引号括起来,不能用双引号或其它括号。(2)字符常量只能是单个字符,不能是字符串。(3)字符可以是字符集中任意字符.但数字被定义为字符型之后就不能参与数值 运算。如5和 5 是不同的

6、。5 是字符常量,不能参与运算。(2)字符变量字符变量的取值是字符常量,即单个字符。字符变量的类型说明符是 char。例如:#includemain()char a,b;a=120;b=121;printf(“%c,%cn%d,%dn“,a,b,a,b); C 语言允许对整型变量赋以字符值.#includemain()int a,b;a= A;b= B;printf(“%dn%dn”,a,b);printf(“%cn%cn”,a,b);C 语言允许对字符变量赋以整型值.#includemain()char ch1,ch2;ch1=74;ch2=64;printf(“%cn%cn”,ch1,ch

7、2);printf(“%dn%dn”,ch1,ch2);在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。从结果看,a ,b 值的输出形式取决于 printf 函数格式串中的格式符,当格式符为“c“ 时,对应输出的变量值为字符,当格式符为“d“时,对应输出的变量值为整数。以整型和字符型输出 C 语言允许字符变量参与数值运算,即用字符的 ASCII 码参与运算。#includemain()char ch1,ch2;ch1= a+12;ch2= b+14;printf(“%cn%cn”,ch1,ch2); printf(“%dn%dn”,ch1,ch2);由于大小写字母的 ASCI

8、I 码相差 32,所以大小写能相互转化1 小写转换为大写#includemain()char ch1,ch2;ch1= a ;ch2= b;ch1=ch1-32;ch2=ch2-32;printf(“%cn%cn”,ch1,ch2);2 大写转换为小写#includemain()char ch1,ch2;ch1=A ;ch2=B;ch1=ch1+32;ch2=ch2+32;printf(“%cn%cn“,ch1,ch2);4.转义字符转义字符是一种特殊的字符常量。它以反斜线“开头 ,后跟一个或几个字符。常用的转义字符及其含义 如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值

9、号右边的类型换成左边的类型。具体规定如下:1.实型赋予整型,舍去小数部分#includemain()int a,b,c;a=3.2;b=5.8;c=a+b;printf(“%dn%dn”,a,b);printf(“%dn”,c);字符形式 含义 ASCII 代码n 换行,将当前位置移到下一行开头 10t 水平制表(跳到下一个 tab 位置) 9b 退格,将当前的位置移到前一列 8r 回车,将当前位置移到本行开头 13f 换页,将当前位置移到下页开头 12 反斜线符“ 92 单撇号字符 39 双撇号字符 34ddd 1 到 3 位 8 进制数所代表的字符xhh 12 位 16 进制数所代表的字符

10、2.整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为 0)#includemain()float a,b,c;a=5;b=9;c=a+b;printf(“%fn%fn”,a,b);printf(“%f”,c);3.字符型赋予整型,由于字符型为一个字节, 而整型为二个字节,故将字符的ASCII 码值放到整型量的低八位中,高八位为 0。4.整型赋予字符型,只把低八位赋予字符量。#includemain()char ch1,ch2;ch1=5;ch2=8;printf(“%dn%dn”,ch1,ch2); 5.运算符和表达式运算符的种类 C 语言的运算符可分为以下几类:1.

11、算术运算符(共 7 种)加 减 乘 除 求余 自增 自减+ * / % + (1)加法运算符“+”(1)双目运算符,具有右结合性(从右到左)(2)“+”也可作正值运算符,此时为单目运算,例如:+3(2)减法运算符“-”(1)双目运算符。具有左结合性。(2)但“-”也可作负值运算符,此时为单目运算,例如:-x, -5 等。(3)乘法运算符“*”(1)双目运算,(2)具有左结合性。(4)除法运算符“/”(1)双目运算具有左结合性。(2)参与运算量均为整型时,结果也为整型,舍去小数。#includemain()printf(“%d,%d”,20/7,-20/7);本例中,20/7,-20/7 的结果

12、均为整型,小数全部舍去。(3)如果运算量中有一个是实型,则结果为双精度实型。#includemain()printf(“%f,%fn“,20.0/7,-20.0/7);本例中,20.0/7 和-20.0/7 由于有实数参与运算,因此结果也为实型。(5)求余运算符(模运算符)“%”(1) 双目运算具有左结合性。(2)在%运算符左侧的运算数为被除数,右侧的运算数为除数,运算结果是两数除后的余数。 (3)求余运算符% 要求参与运算的量均为整型例如:#includemain()printf(“%dn“,100%3);输出结果:1(6)自增运算符(+ +)其功:使变量的值自增 1。例如:#include

13、main()int m=12;int n=34;printf(“%dn%dn”,m+,+n);(7)自减运算符( )功能:使变量值自减 1。#includemain()int m=12;int n =34;printf(“%dn%dn”,m-,-n);自增、自减运算符的有关特征:(1)m+ +,m- (在使用 m 之后,使 m 的值加(减)1)(2)+ +n,-n(在使用 n 之前,先使 n 的值加(减)1)(3)它们都是单目运算且具有右结合性(4)它们只用于变量,而不能用于常量或表达式 .例如:5+ +,(a+b)+ + 不合法关系运算符(共 7 种)大于() 小于 (=) 小于等于(,=的

14、优先级相同,高于=和!=,=和!=的优先级相同。关系表达式的值是“真”和“假”,用“1”和“0”表示。例如:a=3,b=2,c=1,则:关系表达式 “ab”的值为“真”,表达式的值为 1关系表达式 “b+cmain()int a,b,c,d,f;a=3,b=2,c=1;printf(“%dn”,ab);printf(“%dn”,b+cb);printf(“%dn”,f=abc);printf(“%dn”,(ab)=c);3.逻辑运算符(3 种)逻辑与(a=1,b=2;printf(“%dn”,!a);printf(“%dn”,aprintf(“%dn”,a|b);4.位运算符(6 种位运算符)

15、按位与 按位或 按位异或 取反 左移 右移a=12,b=10;c=a printf(“%dn”,c);(2)“按位或”运算符(|) 其功:两个相应的二进位中只要有一个为 1,则该位的结果为 1,否则为 0。规律:例如:#includemain()int a,b,c;a=12,b=10;c=a|b;0(3)“按位异或 ”运算符 其功能:是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为 1。参与运算数仍以补码出现,例如 95 可写成算式如下: 规律:#includemain()int a,b,c;a=12,b=10;c=ab;printf(“%dn”,c);(4)求反运算符(

16、) (1)为单目运算符。 (2)具有右结合性。 其功能是对参与运算的数的各二进位按位求反。规律: #includemain()int a=12;printf(“%dn“,a);(5)左移运算 左移运算符“main()int a=3;printf(“%dn“,a”是双目运算符。功能:是把“ ”左边的运算数的各二进位全部右移若干位,“”右边的数指定移动的位数。 #include00=0 01=1 10=1 11=001 10main()int a=15;printf(“%dn“,a2);例如:设 a=15,a2 表示把 000001111 右移为 00000011(十进制 3)。应该说明的是,对于

17、有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补 0,而为负数时,符号位为 1,最高位是补 0 或是补 1 取决于编译系统的规定。Turbo C 和很多系统规定为补 1。赋值运算符赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。其一般形式为: 变量=表达式 赋值表达式:由“= ”连接的式子称为赋值表达式 例如:x=a+bw=sin(a)+sin(b)y=i+-j 赋值表达式的功能:计算表达式的值再赋予左边的变量。(1)运算符具有右结合性。 a=b=c=5 可理解为 a=(b=(c=5)(2)在其它高级语言中,赋值构成了一个语句,称为赋值语句。 (3)在 C 中

18、,把“=”定义为运算符,从而组成赋值表达式。 (4)凡是表达式可以出现的地方均可出现赋值表达式。例如,式子 x=(a=5)+(b=8)是合法的。它的意义是把 5 赋予 a, 8 赋予 b,再把 a,b 相加,和赋予 x ,故 x 应等于 13。(5)按照 C 语言规定,任何表达式在其未尾加上分号就构成为语句。因此如 x=8;a=b=c=5;都是赋值语句加赋值 += a+=b 等价于 a=a+b减赋值 -= a-=b 等价于 a=a-b乘赋值 *= a*=b 等价于 a=a*b除赋值 /= a/=b 等价于 a=a/b模赋值 %=a%=b 等价于 a%b位与赋值 printf(“%dn”,a-=

19、b);printf(“%dn”,a+=b);printf(“%dn”,a*=b);printf(“%dn”,a/=b);printf(“%dn”,a%=b);printf(“%dn”,aprintf(“%dn”,a|=b);printf(“%dn”,ab);printf(“%dn”,a=b);6.条件运算符(?:)这是一个三目运算符即有三个参与运算的量,用于条件求值(?:)。条件运算符 ? : 表达式 1? 表达式 2: 表达式 3 求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 2 的值作为整个条件表达式的值。 条件表达式通常用于赋值语句之中。#i

20、ncludemain()int k,a,b,c,d;a=1; b=2;c=3;printf(“%dn”,ab?(ac?a:c):(b);printf(“%dn”,ab?a:cd?c:d);printf(“%dn”,ab?(a=1000):(b=10000);注意:(1)条件表达式中 ,表达式 1 的类型可以与表达式 2 和表达式 3 的类型不同(2)表达式 2 和表达式 3 的类型也可以不同,但是条件表达式的值的类型为二者中较高的类型#includemain()位右移赋值 =a=b 等价于 a=abint x,y;printf(“%dn“,x?a:b);printf(“%fn“,xy?1:1.

21、5);printf(“%fn“,xmain()int a; printf(“%dn”,(a=3*5,a*4),a+5);printf(“%dn”,(a=3*5,a*4,a+5);9.求字节数运算符用于计算数据类型所占的字节数(sizeof)。#include main()printf(“int:%d bytesn“,sizeof(int);printf(“char:%d byten“,sizeof(char);printf(“short:%d bytesn“,sizeof(short);printf(“long:%d bytesn“,sizeof(long);printf(“float:%d

22、bytesn“,sizeof(float);printf(“double:%d bytesn“,sizeof(double);printf(“long double:%d bytesn“,sizeof(long double);10 数据类型转换自动转换(1)在 C 语言中,整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用) 。#includemain()字节数运算符sizeof 测试数据类型所占用的字节数int a=10;char ch1= a;float m=1.5;printf(“%fn”,10+ a+1.5);(2)如果一个运算符两侧的操作数的数据类型不同,则系统按

23、“先转换、后运算” 的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。#includemain()float x,y;long m,n;printf(“%fn“,x=3/2+8/3);printf(“%fn“,3.0/2+8/3.0);强制转换强制类型转换的一般格式为:(类型名 )(表达式)当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。例如,#includemain()printf(“%dn”,(int)3.324);printf(“%dn”,(int)(3.324);printf(“%fn”,(double)(10%3);printf(“%fn”,(doub

24、le)10%3); (错误的表达方法)printf(“%fn”,(float)5/2); /*将 5 转换成实型,再除以 2(=2.5)*/printf(“%fn”,(float)(5)/2);printf(“%fn”,(float)(5/2); /*将 5 整除 2 的结果(2)转换成实型(2.0)*/注意:强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,(double)a 只是将变量 a 的值转换成一个 double 型的中间量,其数据类型并未转换成 double 型。#includemain()float x;int i;x=3.6;i=(int)x;printf(“%fn%dn”,x,i);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报