c语言第一次学习--函数的书写和六种数据类型

1.模拟函数

#include <stdio.h>
int f(int x)
	{
		return 3*x-8;
	}
	int g(int x,int y)
	{
		if(x>0)
		return f(x)+y;
		else
		return f(x-y+5);
	}
int main()
{
	int x=9;
	int y=2*x-7;
	int k1=f(4);
	int k2=f(k1-2);
	int k3=f(k1+f(k2));
	int w1=g(3,5);
	int w2=g(f(k1)-5,g(2,f(k2+w1)));
	   
   printf("%d \n",w2);
   
   return 0;
}

2.斐波那契数列(递归)
递归分为终止递归部分和持续递归部分,以斐波那契数列为例子

#include <stdio.h>
int f(int x)
{
	if(x==0||x==1)
	return x;
	else
	return f(x-1)+f(x-2);
}
int main()
{
   for(int i=1;i<=12;i++)
   {
	   printf("%d \n",f(i));
   }
   return 0;
}

需知道不管怎么调用,函数的每次调用都是独立的个体,是互不干扰的。
3.c语言的六种数据类型
1B=1字节=8比特=8bit
short-16bit int-32bit long-64bit float-32bit double-64bit char-8bit

请添加图片描述

double有效数字16位,float有效数字6~7位,float和int相比精度并不高;

float的有效数字为什么是6~7位?
(−1)S∗1.M∗2E−127
阶码使用的是一种叫做移码的东西,和补码类似,就是数值整体偏移固定长度(float中偏移量offset=127)。所以阶码范围1254实际表示的是-126127。阶码全为1表示无穷大,全为0表示非规格化数。
尾数部分采用1.M的格式,小数点前固定有一个1,这样表示的范围又大了一点。
至于精度问题,当1.11111111111111111111111作为尾数时,精度最高。此时共计24个1,即2^23=8388608共7位。所以C语言的float精度为7的结论得出来了。至于为什么6~7,是因为十进制和二进制相互转化的时候,不是所有数都能对得上,会有些情况存在误差。比如计算机无法准确表示0.51,只能表示为0.5099999…。所以准确能保证的是6位。

char本质上是数字类型;
1>既然是数字,可以用%d输出,可以看到该符号的编码;
2>也可以比较大小;
3>但是加减不建议,因为char是8位,可能会超范围;

硬盘上删除一些数据并非真的删掉了,只是被标记为无效;包含硬盘上的可用空间也是被标记为无效的空间。
不管是视频数据还是音频数据在计算机里都是二进制;若被标记为int类型则按照int类型解析,其他类型也一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值