C语言数据类型最新版本_第1页
C语言数据类型最新版本_第2页
C语言数据类型最新版本_第3页
C语言数据类型最新版本_第4页
C语言数据类型最新版本_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、.整型整型字符型字符型实型实型有有无无16-3276832767(signed) long32-21474836482147483647有有323.4e-383.4e38说明:数据类型所占字节数随机器硬件不同而不同, 上表以IBM PC机为例。.转换成十进制数的方法:转换成十进制数的方法:0123 = 1x82 +2x81+3x80 =( 83 )100 x123 = 1x162 +2x161+3x160= ( 291 )100Xff = 15x161+15x160=( 255 )10.例如例如 30000 为为int型型 65536 为为long int 型型 79L、012L 为为long

2、 int 型型. 实型常量的说明实型常量的说明(1)(1)实型常量采用十进制小数形式表示时,必须有实型常量采用十进制小数形式表示时,必须有 小数点。例如小数点。例如:123. :123. 是实型常量,而是实型常量,而123123是整型是整型 常量常量(2)(2)采用指数形式表示时,在采用指数形式表示时,在E E或或e e之前必须要有数之前必须要有数 字,且之后的指数必须为整数。例如:字,且之后的指数必须为整数。例如:E6E6、.e6.e6、 e e 等都是不合法的等都是不合法的(3)(3)实型常量的整数部分为实型常量的整数部分为0 0时可以省略,如下形式时可以省略,如下形式 是允许的:是允许的

3、:.57, .0075e2, -.125, -.175E-2.57, .0075e2, -.125, -.175E-2(4)(4)所有的实型常量均被看作是双精度类型所有的实型常量均被看作是双精度类型(doubledouble). 转义字符及其含义:b _above $123M.D.John3days#33char$123ab. .变量值变量值3a变量名变量名存储单元存储单元决定分配字节数和数的表示范围合法标识符例例: int a,b,c; float data;例例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int

4、 x=y=z=1; main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);变量定义main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);.编译程序根据变量定义为其编译程序根据变量定义为其分配指定字节的内存单元分配指定字节的内存单元.地址地址int a=1, b=-3,c;abc2字节字节2字节字节2字节字节地址地址地址地址.内存内存1-3随机数随机数. .例例2-1 2-1 整型变量的使用整型变量的使用#

5、include #include int main()int main() int x,y,z; int x,y,z; x=10;y=20; x=10;y=20; z=x+y; z=x+y; printf(“x+y=%dn”,z); printf(“x+y=%dn”,z); return 0; return 0; 输出结果:输出结果:x+y=30 x+y=30.int x;int x;x=10;x=10;则变量则变量x x的值的值1010在内存中的存放形式:在内存中的存放形式: int x; int x;x=-10;x=-10;则变量则变量x x的值的值1010在内存中的存放形式:在内存中的存

6、放形式:.例例2-2 2-2 整型数据的溢出问题整型数据的溢出问题#include #include int main()int main() int x, y; int x, y; x=32767; x=32767; y=x+1; y=x+1; printf(%d,%dn,x,y); printf(%d,%dn,x,y); return 0; return 0; 运行结果:运行结果:-32768-32768原因:一个原因:一个intint型变量只能容纳型变量只能容纳-32768-32768到到3276732767范范 围内的数,无法表示超过这个范围的数。围内的数,无法表示超过这个范围的数。.

7、例例 float a;a=111111.111; /* a=111111.1*/double b;b=111111.111; /* b=111111.111*/. 例例2-32-3实型变量的使用实型变量的使用#include#includeint main()int main() float x,y,z;float x,y,z;x=10;x=10;y=20;y=20;z=x+y ;z=x+y ;printf(“x+y=%fn”,z);printf(“x+y=%fn”,z);return 0;return 0; 运行结果:运行结果:x+y=30.000000 x+y=30.000000.没有字符

8、串变量,用字符数组存放. .例例 #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn”,total,ch1); 宏定义变量定义输出结果运行结果:total=37.500000, ch1=d.C运运算算符符运算符的分类运算符的分类.定义:定义:由常量、变量、函数、运算符和括号由常量、变量、函数、运算符和括号组合起来的、符合组合起来的、符合C C语法规则的式子称为表达式。语法规则的式子称为表达式。一个表达式有一

9、个值以及其对应的类型一个表达式有一个值以及其对应的类型表达式求值首先进行优先级高的运算再进行表达式求值首先进行优先级高的运算再进行优先级低的运算,然后对于优先级相同的运算按优先级低的运算,然后对于优先级相同的运算按结合方向进行运算。结合方向进行运算。结合方向:左结合、右结合结合方向:左结合、右结合例如:例如: .例例5/2 = 2 -5/2.0 = -2.55%2 = 1 -5%2 = -11%10 = 15%1 = 05.5%2 ( ) . .例例2-6 2-6 计算表达式计算表达式10-3.0/210-3.0/2的值的值#include #include int main( )int ma

10、in( ) printf(”10-3.0/2=%f”, 10 - 3.0 / 2);printf(”10-3.0/2=%f”, 10 - 3.0 / 2); 运行结果如下:运行结果如下:10-3.0/2=8.50000010-3.0/2=8.500000 .2.2.算术表达式算术表达式 定义:用算术运算符和括号将运算对象连接起来定义:用算术运算符和括号将运算对象连接起来的、符合的、符合C C语法规则的式子称为算术表达式。其语法规则的式子称为算术表达式。其中的运算对象包括常量、变量、函数等。中的运算对象包括常量、变量、函数等。 例如:例如:x+yx+y、(x(x* *2)/y2)/y、sin(x

11、)sin(x)sin(y)sin(y)等都是算等都是算术表达式。术表达式。doublefloatlongunsignedintchar,short低低.(1) (x+y)h2(2) s(s-a)(s-b)(s-c)(3) (x+1)2+(y-1)2在在C C语言中,其合法的算术表达式如下:语言中,其合法的算术表达式如下:(1) (x+y)*h/2.0(2) s*(s-a)*(s-b)*(s-c)(3) (x+1)*(x+1)+(y-1)*(y-1) .种类:l = = !=l 结合方向:自左向右 l 优先级别:l 关系运算符优先级低于算术运算符优先级优先级6(高)(高)优先级优先级7(低)(低

12、)= =!= .关系运算结果:关系运算结果:1 1(真)和(真)和 0 0(假)(假) 例例2-8 2-8 计算下列关系表达式的值计算下列关系表达式的值(1) 1010(2) 10=10(3) 1010!=10(4) 3*8-9!=5+7%3 .2.2.关系表达式关系表达式 关系表达式的值关系表达式的值: :是逻辑值是逻辑值“真真(True)”(True)”或或“假假(False)”(False)”,用,用1 1或或0 0表示表示 关系表达式例子关系表达式例子 intint a=3,b=2,c=1,d,f; a=3,b=2,c=1,d,f; ab ab (ab)=c (ab)=c b+cb+c

13、ab d=ab f=abc f=abc/表达式值表达式值1/表达式值表达式值1/表达式值表达式值0/d=1/f=0例例 若若a=0; b=0.5; x=0.3; 则则 a=x0 结果为结果为 A100 结果为结果为10 .ab!a!ba&b a|b真真假假真真假假假假假假真真真真真真假假假假假假假假假假真真真真假假假假真真真真真真假假真真真真 .例例 a=x & xb&xy a=b|x=y !a|ab/ (a=x) & (xb)&(xy)/ (a=b)|(x=y)/ (!a)|(ab)例2-9 假设x = 10,y = 20,分析下列逻辑表达式。(1)

14、!x(2) x&y(3) !x|y(4) !x+5|10%y=x-10y . 位运算是指进行二进制位的运算 例如:将一个存储单元中的各二进制位左移、右移,两个数按位相加等。说明说明(1)(1)位运算符中除位运算符中除 - - 以外,均为二目(元)以外,均为二目(元)运算符,即要求两侧各有一个运算量。运算符,即要求两侧各有一个运算量。(2)(2)运算量只能是整型或字符型的数据,不能运算量只能是整型或字符型的数据,不能为实型数据。为实型数据。运算符运算符含义含义运算符运算符含义含义按位与按位与取反取反按位或按位或右移右移 . 位运算中的位运算中的“& &”、“| |”和和“

15、- -”的真的真值表与逻辑运算等价,唯一不同的是位运值表与逻辑运算等价,唯一不同的是位运算是逐位进行运算的。算是逐位进行运算的。 (异或位运算符)的真值表:(异或位运算符)的真值表:abab000101110011. 定义定义 :用逻辑运算符:用逻辑运算符 短路特性短路特性:逻辑表达式求解时,并非所有的:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该逻辑运算符才能求出表达式的解时,才执行该运算符。运算符。例例 a&b&c /只在只在a为真时,才判别为真时,才判别b的值;的值;

16、只在只在a、b都为真时,才判别都为真时,才判别 c的值的值例例 a|b|c /只在只在a为假时,才判别为假时,才判别b的值;的值; 只在只在a、b都为假时,才判别都为假时,才判别 c的值的值例例 a=1;b=2;c=3;d=4;m=1;n=1;(m=ab)&(n=cd) /结果结果 m=0,n=12.2. 逻辑表达式逻辑表达式. 赋值符号赋值符号“”就是赋值运算符,它的就是赋值运算符,它的作用是将一个数据赋给一个变量。作用是将一个数据赋给一个变量。例例2-11 2-11 假设变量假设变量x x为整型,计算下为整型,计算下列赋值表达式的值。列赋值表达式的值。(1) x = y = 10(

17、1) x = y = 10(2) x = 10+ (y = 20)(2) x = 10+ (y = 20)(3) x = 10+ (y = 20) / (z = 30)(3) x = 10+ (y = 20) / (z = 30)2.3.4 2.3.4 赋值运算符及赋值表达式赋值运算符及赋值表达式.如果赋值运算符两侧的数据类型不一致,但都是如果赋值运算符两侧的数据类型不一致,但都是数值型或字符型时,系统要进行类型转换。数值型或字符型时,系统要进行类型转换。将浮点型数据(包括单、双精度)赋给整型变将浮点型数据(包括单、双精度)赋给整型变量时,舍弃浮点数的小数部分。量时,舍弃浮点数的小数部分。如如

18、: :为整型变量,执行为整型变量,执行“i=3.56i=3.56;”的结果是的结果是使的值为,以整数形式存储在整型变量中。使的值为,以整数形式存储在整型变量中。将整型数据赋给单、双精度变量时,数值不变,将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中,即用但以浮点数形式存储到变量中,即用0 0补足有效补足有效数字位。数字位。如:如:i i为为floatfloat型变量,执行型变量,执行“i=3i=3;”的结果的结果i=3.000000i=3.000000,以单精度浮点数形式存储到,以单精度浮点数形式存储到i i中。中。赋值运算符类型转换赋值运算符类型转换.将一个将一个dou

19、bledouble型数据赋给型数据赋给floatfloat变量时,截取变量时,截取其前面其前面7 7位有效数字,存放到位有效数字,存放到floatfloat变量的存储单变量的存储单元(元(4 4个字节)中。但应注意数值范围不能溢出。个字节)中。但应注意数值范围不能溢出。如果将一个如果将一个floatfloat型数据赋给型数据赋给doubledouble变量时,数变量时,数值不变,有效位数扩展到值不变,有效位数扩展到1616位,在内存中以位,在内存中以8 8个字个字节存储。节存储。 .字符型数据赋给整型变量时,由于字符字符型数据赋给整型变量时,由于字符只占只占1 1个字节,而整型变量为个字节,因

20、个字节,而整型变量为个字节,因此将字符数据(个二进位)放到整型变量此将字符数据(个二进位)放到整型变量存储单元的低位中。存储单元的低位中。第一种情况第一种情况: : 如果字符型为无符号的字符如果字符型为无符号的字符型,则将字符的位放到整型变量低位,型,则将字符的位放到整型变量低位,高位补零。高位补零。第二种情况第二种情况: : 如果字符型为带符号的,如果字符型为带符号的,则将字符的位放到整型变量低位,高则将字符的位放到整型变量低位,高位补符号位,即(符号扩展)。位补符号位,即(符号扩展)。若字符最高若字符最高位为位为0 0,则整型变量高,则整型变量高8 8位补位补0 0;若字符最高;若字符最高

21、位为位为1 1,则高,则高8 8位全补位全补1 1。 .将一个将一个intint、shortshort、longlong型数据赋给一型数据赋给一charchar型变量,只将其低型变量,只将其低8 8位原封不动地送到位原封不动地送到charchar型变量型变量(即截断)。(即截断)。将带符号的整型数据(将带符号的整型数据(intint型)赋给型)赋给longlong型变型变量时,要进行符号扩展,将整型数的量时,要进行符号扩展,将整型数的1616位送到位送到longlong型低型低1616位中;反之,若将一个位中;反之,若将一个longlong型数据赋型数据赋给一个给一个intint型变量,只将型

22、变量,只将longlong型数据中低型数据中低1616位原封位原封不动地送到整型变量(即截断)。不动地送到整型变量(即截断)。.将将unsigned intunsigned int型数据赋给型数据赋给long intlong int型变量时,型变量时,不存在符号扩展问题,只需将高位补即可。将不存在符号扩展问题,只需将高位补即可。将unsigned intunsigned int型数据赋给型数据赋给intint型变量时,将数据原型变量时,将数据原封不动的送到整型变量中,但如果数据范围超过封不动的送到整型变量中,但如果数据范围超过相应整型的范围,会出现错误。相应整型的范围,会出现错误。将非将非un

23、signedunsigned型数据赋给长度相同的型数据赋给长度相同的unsignedunsigned型变量,也是原样照赋(连原有的符号位也作为型变量,也是原样照赋(连原有的符号位也作为数值一起传送)。数值一起传送)。 .定义:定义:由赋值运算符将一个变量和一个表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。连接起来的式子称为赋值表达式。例如:例如:x x1010、x xy y1010。说明:说明:赋值运算符左侧必须是变量,不能是赋值运算符左侧必须是变量,不能是 常量或表达式。常量或表达式。赋值转换规则赋值转换规则: :使赋值号使赋值号右边表达式值自动转换右边表达式值自动转

24、换成其左边变量的类型。成其左边变量的类型。2.2.赋值表达式赋值表达式 . 赋值表达式的值与变量值相等赋值表达式的值与变量值相等, ,且可嵌套。且可嵌套。例例: : a=12; a=12; a+=a-=a a+=a-=a* *a a/a=-264 /a=-264 等价于等价于a=a+(a=a-(aa=a+(a=a-(a* *a)a)a=b=c=5a=b=c=5a=(b=5)a=(b=5)a=5+(c=6)a=5+(c=6)a=(b=4)+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)a=(b=10)/(c=2)/表达式值为表达式值为5 5,a,b,ca,b,c值为值为5 5/

25、表达式值为表达式值为5 5 ,b=5;a=5 ,b=5;a=5/表达式值表达式值1111,c=6,a=11c=6,a=11/表达式值表达式值1010,a=10,b=4,c=6a=10,b=4,c=6/表达式值表达式值5 5,a=5,b=10,c=2a=5,b=10,c=2.复合的赋值运算符 在“=”前面加上其他运算符 种类+= -= += -= * *= /= %= /= %= = &= = |= &= = |=一般形式: 变量变量 双目运算符双目运算符= =表达式表达式它等效于: 变量变量= =变量变量 运算符运算符 表达式表达式a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3. 一般形式: expr1 ? expr2 : expr3 由常量、变量、函数、运算符和括号组合起来的、符合C语法规则的式子称为表达式。 执行过程 expr1取取expr2值值取取expr3值值非非0=0例例 if (ab) printf(“%d”,a); else printf(“%d”,b);printf(“%d”,ab?a:b); . 结合方

温馨提示

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

评论

0/150

提交评论