欢迎来到天天文库
浏览记录
ID:39549526
大小:39.00 KB
页数:4页
时间:2019-07-06
《c语言变量类型(详细)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1数据类型关键字 A.基本数据类型(5个) void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果 char:字符型类型数据,属于整型数据的一种int:整型数据,通常为编译器指定的机器字长在VC中,最长FFFFFFFF八位16进制,-2147483648到+2147483647float:单精度浮点型数据,属于浮点数据的一种 double:双精度浮点型数据,属于浮点数据的一种float与doublefloat和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:floa
2、t:1bit(符号位)8bits(指数位)23bits(尾数位)double:1bit(符号位)11bits(指数位)52bits(尾数位)于是,float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。float的范围为-2^128~+2^128,也即-3.40E+38~+3.40E+38;double的范围为-2^1024~+2^1024,也即-1.79
3、E+308~+1.79E+308。float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。float:2^23=8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;double:2^52=4503599627370496,一共16位,同理,double的精度为15~16位。 B.类型修饰关键字(4个)short:修饰int,短整型数据,可省略被修饰的int。-32768到+
4、32767四位16进制long:修饰int,长整形数据,可省略被修饰的int。FFFFFFFF八位16进制,-2147483648到+2147483647 signed:修饰整型数据,有符号数据类型unsigned:修饰整型数据,无符号数据类型#includeintmain(intargc,char*argv[]){unsignedshorta=-1;shortb=a;printf("%d%d",a,b);return0;}//结果:65535-1这是段很简单的代码 在计算机中,负数是以补码来存储的。C语言中常量整数-1的补码
5、表示为0xFFFFFFFF。截取后面16位FFFF赋值给变量a(unsignedshort)。此时a=0xFFFF(a没有符号位,0xFFFF转换为十进制为65535)。 a又将0xFFFF,直接赋值给shortb。此时b=0xFFFF(但是要注意,b是有符号的,0xFFFF转换为十进制为-1)。执行printf("%d%d",a,b);的时候,要将a和b的值先转换为int型: a没有符号所以转为int型为0x0000FFFF, b有符号转换为int型为0xFFFFFFFF。 C.复杂类型关键字(5个) struct:结构体声明 unio
6、n:共用体声明 enum:枚举声明 typedef:声明类型别名 sizeof:得到特定类型或特定类型变量的大小 D.存储级别关键字(6个) auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配 static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部 register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数 extern:指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模
7、块中寻找其定义。 const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变) volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值 2流程控制关键字 A.跳转结构(4个) return:用在函数体中,返回特定值(或者是void值,即不返回值) continue:结束当前循环,开始下一轮循环 break:跳出当前循环或switch结构 goto:无条件跳转语句 B.分支结构(5个) if:条件
8、语句,后面不需要放分号 else:条件语句否定分支(与if连用) switch:开关语句(多重分支语句) case:
此文档下载收益归作者所有