整数就是没有小数部分的数,在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 \n",x,x,x);
printf("dec =%d octal =%#o hex =%#x \n",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\n",me16,sizeof(int16_t));
}
#include <stdio.h>
int main(void)
{
int i = 2147483647;
unsigned int j = 4294967295;
printf("%d,%d,%d\n",i,i+1,i+2);
printf("%u,%u,%u\n",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\n",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.