📄 c语言:黑客学员必修课之二 - 软件屋.htm
字号:
<P> 整型量包括整型常量、整型变量。整型常量就是整常数。在C语言中,使用的整常数有八进制、十六进制和十进制三种。
</P>
<P> </P>
<P> 整型常量 </P>
<P> 1.八进制整常数八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。
</P>
<P> 以下各数是合法的八进制数: </P>
<P> 015(十进制为13) 0101(十进制为65) 0177777(十进制为65535) </P>
<P> 以下各数不是合法的八进制数: </P>
<P> 256(无前缀0) 03A2(包含了非八进制数码) -0127(出现了负号) </P>
<P> 2.十六进制整常数 </P>
<P> 十六进制整常数的前缀为0X或0x。其数码取值为0~9,A~F或a~f。 </P>
<P> 以下各数是合法的十六进制整常数: </P>
<P> 0X2A(十进制为42) 0XA0 (十进制为160) 0XFFFF (十进制为65535) </P>
<P> 以下各数不是合法的十六进制整常数: </P>
<P> 5A (无前缀0X) 0X3H (含有非十六进制数码) </P>
<P> 3.十进制整常数 </P>
<P> 十进制整常数没有前缀。其数码为0~9。 </P>
<P> 以下各数是合法的十进制整常数: </P>
<P> 237 -568 65535 1627 </P>
<P> 以下各数不是合法的十进制整常数: </P>
<P> 023 (不能有前导0) 23D (含有非十进制数码) </P>
<P> 在程序中是根据前缀来区分各种进制数的。因此在书写常数时不要把前缀弄错造成结果不正确。4.整型常数的后缀在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为0~65535,有符号数为-32768~+32767。八进制无符号数的表示范围为0~0177777。十六进制无符号数的表示范围为0X0~0XFFFF或0x0~0xFFFF。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。例如:
</P>
<P> 十进制长整常数 158L (十进制为158) 358000L (十进制为-358000) </P>
<P> 八进制长整常数 012L (十进制为10) 077L (十进制为63) 0200000L (十进制为65536)
</P>
<P> 十六进制长整常数 0X15L (十进制为21) 0XA5L (十进制为165) 0X10000L
(十进制为65536) </P>
<P> 长整数158L和基本整常数158
在数值上并无区别。但对158L,因为是长整型量,C编译系统将为它分配4个字节存储空间。而对158,因为是基本整型,只分配2
个字节的存储空间。因此在运算和输出格式上要予以注意,避免出错。无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。例如:
358u,0x38Au,235Lu
均为无符号数。前缀,后缀可同时使用以表示各种类型的数。如0XA5Lu表示十六进制无符号长整数A5,其十进制为165。
</P>
<P> 整型变量 </P>
<P> 整型变量可分为以下几类: </P>
<P> 1.基本型 </P>
<P> 类型说明符为int,在内存中占2个字节,其取值为基本整常数。 </P>
<P> 2.短整量 </P>
<P> 类型说明符为short int或short'C110F1。所占字节和取值范围均与基本型相同。 </P>
<P> 3.长整型 </P>
<P> 类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。 </P>
<P> 4.无符号型 </P>
<P> 类型说明符为unsigned。 </P>
<P> 无符号型又可与上述三种类型匹配而构成: </P>
<P> (1)无符号基本型 类型说明符为unsigned int或unsigned。 </P>
<P> (2)无符号短整型 类型说明符为unsigned short </P>
<P> (3)无符号长整型 类型说明符为unsigned long </P>
<P> 各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。
下表列出了Turbo C中各类整型量所分配的内存字节数及数的表示范围。 </P>
<P> 类型说明符 数的范围 分配字节数 </P>
<P> int -32768~32767 ■■ </P>
<P> short int -32768~32767 ■■ </P>
<P> signed int -32768~32767 ■■ </P>
<P> unsigned int 0~65535 ■■ </P>
<P> long int -2147483648~2147483647 ■■■■ </P>
<P> unsigned long 0~4294967295 ■■■■ </P>
<P> 整型变量的说明 </P>
<P> 变量说明的一般形式为: 类型说明符 变量名标识符,变量名标识符,...; 例如: </P>
<P> int a,b,c; (a,b,c为整型变量) </P>
<P> long x,y; (x,y为长整型变量) </P>
<P> unsigned p,q; (p,q为无符号整型变量) </P>
<P> 在书写变量说明时,应注意以下几点: </P>
<P> 1.允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。
</P>
<P> 2.最后一个变量名之后必须以“;”号结尾。 </P>
<P> 3.变量说明必须放在变量使用之前。一般放在函数体的开头部分。 </P>
<P> [Practice] //1int a,b; </P>
<P> short int c; </P>
<P> short d=100; </P>
<P> a=d-20; </P>
<P> b=a+d; </P>
<P> c=a+b+d; </P>
<P> d=d-a+c-b;'Vtable </P>
<P> a,2,0 </P>
<P> b,2,0 </P>
<P> c,2,0 </P>
<P> d,2,100 </P>
<P> of Vtable </P>
<P> 'Vupdate </P>
<P> 1,0;2,0 </P>
<P> 3,0 </P>
<P> 4,100 </P>
<P> 1,80 </P>
<P> 2,180 </P>
<P> 3,360 </P>
<P> 4,200 </P>
<P> of Vupdate </P>
<P> of Practice </P>
<P> [Practice] //2int a=5; </P>
<P> int b=9; </P>
<P> long int c; </P>
<P> long d; </P>
<P> c=a+b-7; </P>
<P> d=a*b*c; </P>
<P> c=d*d*d; </P>
<P> a=c-d;'Vtable </P>
<P> a,2,5 </P>
<P> b,2,9 </P>
<P> c,4,0 </P>
<P> d,4,0 </P>
<P> of Vtable </P>
<P> 'Vupdate </P>
<P> 1,5 </P>
<P> 2,9 </P>
<P> 3,0 </P>
<P> 4,0 </P>
<P> 3,7 </P>
<P> 4,315 </P>
<P> 3,31255875 </P>
<P> 1,-5112 </P>
<P> of Vupdate </P>
<P> of Practice </P>
<P> [Practice] //3int a=6,b=19; </P>
<P> unsigned int c; </P>
<P> int d; </P>
<P> c=a-b+7; </P>
<P> d=b*c; </P>
<P> a=b+c+d; </P>
<P> b=-a;'Vtable </P>
<P> a,2,6 </P>
<P> b,2,19 </P>
<P> c,2,0 </P>
<P> d,2,0 </P>
<P> of Vtable </P>
<P> 'Vupdate </P>
<P> 1,6;2,19 </P>
<P> 3,0 </P>
<P> 4,0 </P>
<P> 3,65530 </P>
<P> 4,-114 </P>
<P> 1,-101 </P>
<P> 2,101 </P>
<P> of Vupdate </P>
<P> of Practice </P>
<P> void main(){ </P>
<P> long x,y; </P>
<P> int a,b,c,d; </P>
<P> x=5; </P>
<P> y=6; </P>
<P> a=7; </P>
<P> b=8; </P>
<P> c=x+a; </P>
<P> d=y+b; </P>
<P> printf("c=x+a=%d,d=y+b=%d\n",c,d); </P>
<P> } </P>
<P> 将main说明为返回void,即不返回任何类型的值 </P>
<P> x,y被定义为long型 </P>
<P> a,b,c,d被定义为int型 </P>
<P> 5->x </P>
<P> 6->y </P>
<P> 7->a </P>
<P> 8->b </P>
<P> x+a->c </P>
<P> y+b->d </P>
<P> 显示程序运行结果 of long x,y; </P>
<P> int a,b,c,d; </P>
<P> c=x+a; </P>
<P> d=y+b; </P>
<P> 从程序中可以看到:x, y是长整型变量,a,
b是基本整型变量。它们之间允许进行运算,运算结果为长整型。但c,d被定义为基本整型,因此最后结果为基本整型。本例说明,不同类型的量可以参与运算并相互赋值。其中的类型转换是由编译系统自动完成的。有关类型转换的规则将在以后介绍。</P>
<P> 实型量 </P>
<P> 实型常量 </P>
<P> 实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中,实数只采用十进制。它有二种形式: 十进制数形式指数形式
</P>
<P> 1.十进制数形式 </P>
<P> 由数码0~
9和小数点组成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均为合法的实数。 </P>
<P> 2.指数形式 </P>
<P> 由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为a E n
(a为十进制数,n为十进制整数)其值为 a*10,n 如: 2.1E5 (等于2.1*10,5), 3.7E-2
(等于3.7*10,)-2*) 0.5E7 (等于0.5*10,7), -2.8E-2
(等于-2.8*10,)-2*)以下不是合法的实数 345 (无小数点) E7 (阶码标志E之前无数字) -5
(无阶码标志) 53.-E3 (负号位置不对) 2.7E (无阶码) </P>
<P> 标准C允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如356f和356.是等价的。例2.2说明了这种情况:
</P>
<P> void main() </P>
<P> { </P>
<P> printf("%f\n%f\n",356.,356f); </P>
<P> } </P>
<P> void 指明main不返回任何值 利用printf显示结果 结束 </P>
<P> 实型变量 </P>
<P> 实型变量分为两类:单精度型和双精度型, </P>
<P> 其类型说明符为float 单精度说明符,double 双精度说明符。在Turbo
C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8
个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。 </P>
<P> 实型变量说明的格式和书写规则与整型相同。 </P>
<P> 例如: float x,y; (x,y为单精度实型量) </P>
<P> double a,b,c; (a,b,c为双精度实型量) </P>
<P> 实型常数不分单、双精度,都按双精度double型处理。 </P>
<P> void main(){ </P>
<P> float a; </P>
<P> double b; </P>
<P> a=33333.33333; </P>
<P> b=33333.33333333333333; </P>
<P> printf("%f\n%f\n",a,b); </P>
<P> } </P>
<P> 此程序说明float、double的不同 </P>
<P> a ■■■■ </P>
<P> b ■■■■■■■■ </P>
<P> a<---33333.33333 </P>
<P> b<---33333.33333333333;; </P>
<P> 显示程序结果 </P>
<P> 此程序说明float、double的不同 </P>
<P> float a; </P>
<P> double b; </P>
<P> a=33333.33333; </P>
<P> b=33333.33333333333333; 从本例可以看出,由于a
是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。b 是双精度型,有效位为十六位。但Turbo
C 规定小数后最多保留六位,其余部分四舍五入。 </P>
<P> [Practice] //floatint a=32; </P>
<P> float b; </P>
<P> double d; </P>
<P> b=12345678; </P>
<P> d=b*100; </P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -