整数就是没有小数部分的数,在C中小数点永远不会出现在整数中。例如2,-24,2456都是整数,整数以二进制存储,例如7的二进制表示为111,在8位的字节中存储它的前5位为0,将后3位置1.
浮点数即加了小数点的数. 2.75,3.16E7,7.00,2e-8都是浮点数,
区别:
浮点数可以表示比整数范围大得多的数。
对于一些算术运算,浮点数会损失更多的精度
浮点数的计算会慢于整数,不过,已经开发出专门处理浮点运算的微处理器。
/*以十进制8进制16时制输出100*/ #include <stdio.h> int main(void) { int x =100; printf("dec =%d octal =%o hex =%x ",x,x,x); printf("dec =%d octal =%#o hex =%#x ",x,x,x); } #include <stdio.h> #include <inttypes.h> int main(void) { int16_t me16; me16 =4593; printf("First assume int16_t is short : me16=%hd size=%zd ",me16,sizeof(int16_t)); }
#include <stdio.h> int main(void) { int i = 2147483647; unsigned int j = 4294967295; printf("%d,%d,%d ",i,i+1,i+2); printf("%u,%u,%u ",j,j+1,j+2); return 0; }
结果:
2147483647,-2147483648,-2147483647
4294967295,0,1
Note:
这个例子是基于int值是4字节的情况,注意无符号数的取值范围0-4294967295,所以无符号的减法操作时没有负数.
Char 类型
#include <stdio.h> int main(void) { char grade ='A'; char grade1 =65; char testChar ='ABCD'; printf("%c,%c,%c a ",grade,grade1,testChar); return 0; } 结果: A A D
Char 类型用于存储字母和标点符号之类的字符。但是在技术实现上char类型却是整数类型,这是因为char类型实际存储的是数字而不是字符。为了处理字符,计算机使用一种数字编码,用特定的整数表示特定的字符。所以可以用char grade1 =65;给字符赋值。
在int类型为32位及char 类型为8位的ASCII系统中 char grade =’B’意味着’B’作为数值66存储在一个8位单元中。利用字符常量这个特性,可以定义字符常量’ABCD’,将这4个独立的8位ASCCI码存储一个32位单元中。然而,如果把这个字符常量赋给一个char变量,那么只有最后8位会起作用,因此变量值为D.