栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言学习日志2

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言学习日志2

【学习日志】2022.6.17——2022.6.19

来写写这几天的收获吧。

1. 程序中表示常量的例子
记事本的单价是15.6元,输出单价和购买2本记事本的金额。

#include
#define PRICE 15.6
int main(void)
{
	printf("单价:%fn",PRICE);  //定义符号常量PRICE,在程序中表述数值15.6 
	printf("金额:%fn",PRICE*2);
	return 0;
}

因为PRICE是15.6,是实数,所以输出应该用%f,而不用%d。接下来我们可以来测试一下。

若我们把程序%f改为%d,我们将看到,所以这样肯定是错误的。

2. 变量的赋值及存储空间的查看

#include 
int main(void)
{
	char c1,c2;
	c1=97;
	c2='b';
	printf("%c,%cn",c1,c2);
	printf("%d,%d",c1,c2);
	return 0;
}

程序结果

a b
97 98

变量c1,c2的三要素如图所示

变量名存储单元内容存储单元长度对应ASCII字符
c1971 bytea
c2981 byteb

存储规则有两大类:整型、字符型、指针型数据属于同一类,都按整数规则处理;浮点数为一类,按照小数存储规则处理。

3. sizeof操作符测试数据类型的位长

#include
int main(void)
{
	printf("int size=%dn",sizeof(int));
	printf("short int size=%dn",sizeof(short int));
	printf("long int size=%dn",sizeof(long int));
	return 0;
}

程序结果

int size=4
short int size=2
long int size =4

说明:int size=4,表示运行以上程序的IDE,int长度是4byte.

4. 分别以字符和数值的形式输出‘a’ 'b’的代码

#include 
int main(void)
{
	
	printf("%c,%cn",'a','b'); //%c表示要以字符的形式输出数据 
	printf("%d,%dn",'a','b'); //%d表示要以整数的形式输出数据 
	return 0;
}

程序结果

a,b
97,98

5. 实数的存储规则
先来看一个例子

#include 
int main(void)
{
	float f=123.456;
	if(f==123.456) printf("Yes");
	else printf("No");
	printf("f=%fn",f);
	return 0;
}

理论上应该输出为Yes才对,但是实际程序运行出来输出的是No,这是为什么呢?
究其原因,这是二进制表示法产生的误差,在计算机中以有限的32bit长度来反映无限的实数的集合,因此大多数情况下都是一个近似值。



【总结】
从这里我们也可以了解到什么是偏移量,虽然之前在学51单片机写汇编的时候经常要用到偏移量,现在才稍微理解了一下。加偏移量的目的是让指数部分不会变成负数,方便运算。同时我们也能够知道float的精度为6~7位有效数字,double的精度最多为16位。整数和实数的存储规则是完全不同的,同一个数按照整数存储与按照实数存储其形式截然不同。当数据以某种类型存储时,除非你知道它的本质,不然不要试图用另外一种类型去读,否则会引起误差。

PS
这几天都忙着去弄stm32了,但是还是要继续坚持学写c啊,最重要的是摸清其中的本质,其实我很讨厌普通教科书上面冗长的概念,学会一门编程还是要多动手写代码,不断调试,这样我们也就自然而然的了解了概念的含义。道阻且长,一起加油吧。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号