数据和C

整数就是没有小数部分的数,在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.


原文地址:https://www.cnblogs.com/riasky/p/3464878.html