C语言基础知识

C语言基础知识,第1张

C语言基础知识
  • 不同类型变量的范围
  • float表示的数据范围为什么比long的范围要大
  • printf()函数的使用
  • 浮点数如何取余
  • 参数和状态的区别

不同类型变量的范围

32位 *** 作系统,不同类型变量对应的字节数为:(红色的表示与64位系统不同之处)

类型分类字节数范围备注
char字符型1个0~255
char*(即指针变量)指针4个/
short int短整型2个-32768~32767
unsigned short int短整型2个0~65535
int整型4个-2147483648 ~ +2147483647
unsigned int无符号整型4个0 ~ 4294967295
long长整形4个-32768~32767
unsigned long无符号长整形8个0 ~ 4294967295
float浮点型4个 − 3.4 ∗ 1 0 38   — —   3.4 ∗ 1 0 38 −3.4∗10^{38}~——~3.4∗10^{38} 3.41038  3.41038十进制下,小数点后6~7位有效
double双精度浮点型8个 − 1.7 ∗ 1 0 308   — —   1.7 ∗ 1 0 308 −1.7∗10^{308}~——~1.7∗10^{308} 1.710308  1.710308十进制下,小数点后15~16位有效
float表示的数据范围为什么比long的范围要大
  • 详细说明
首先要把17.625换算成二进制:10001.101

	整数部分,除以2,直到商为0,余数反转。 	
	小数部分,乘以2,直到乘位0,进位顺序取。

在将10001.101右移,直到小数点前只剩1位:
	1.0001101 * 2^4 因为右移动了四位

 这个时候,我们的底数和指数就出来了
 底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011 符号部分是整数,所以是0
综上所述,17.625在内存中的存储格式是: 01000001 10001101 00000000 00000000

printf()函数的使用

%d称为格式控制符,它指明了以何种形式输出数据。格式控制符均以%开头,后跟其他字符。
printf 支持更多的格式控制,例如:

int a=100;
int b=200;
int c=300;
printf("a=%d, b=%d, c=%d", a, b, c);//格式化输出

会在屏幕上显示:
a=100, b=200, c=300

浮点数如何取余
  • 在KEIL C51中遇到的浮点数取余问题,编译器将’%'提示为不识别的标记,原因为被 *** 作数为浮点数时,不能进行取余 *** 作;
    实际使用中如果需要取浮点数的各个位数,应先将被 *** 作数显式强制转换为整形。
例如:
float a = 0;
a  = a / 100;//取小数点前两位
a = (int)(100 * a) % 100;//取小数点后两位
参数和状态的区别
  • 类比控制层与UI层,用控制层的API来举例
  • 参数对象对控制层来说为输入,是由UI模块生成的,控制层不能修改参数对象里的参数
  • 状态对象对控制层来说是输出,由控制层自己产生,UI层不能修改控制层状态的对象。
  • 但是UI层可以通过调用API提供的命令接口来改变控制层状态的对象。
  • 这个输入/输出仅指控制层和UI这两个模块,对于通过IO口直接读取状态的输入仍然是定义在状态对象里的。算是控制层的输出

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/787556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存