c语言中三个变量大小排序与内存的关系!!!

有关三个变量 进行大小排序!!!
#include<stdio.h>

int main(void)
{
int a, b, c;
int t;
printf (“abc:”);
scanf("%d %d %d",&a, &b, &c);

if (a > b)
{
	t = a;
	a = b;
	b = t;
}

if (a > c)
{
	t = a;
	a = c;
	c = t;

}

if (b > c)
{
	t = b;
	b = c;
	c = t;
}

printf ("%d %d %d\n",a, b, c);



return 0;

}
这里通过if语句将前位变量的值与后位的变量的值进行比较 !!
通过赋值运算将a,b,c依次交换为较小的值!

这里的变量a,b,c并不是一个数字,而是内存中所占用的字节的名称!

内存中所展现的数据是二进制数据,二进制数据由一个个bit所组成;
一个字节占用八个bit,而这里所定义的数据类型位 int(int占用四个字节的空间),
就相当于在内存空间中有三个 32个bit空间 分别命名为a,b,c。

scanf就是将所输入的内容存入a,b,c这几个空间中进行存储,
接下来的if语句就是将他们从空间中提取出来,通过cpu进行运算, 根据我们给出的条件
判断是该将其原路送回 还是与别的空间当中的数值进行交换储存,而当所有的条件都判断完了
也就意味着当前abc三个空间中所储存的数已经是我们想要其储存的数字了!!

之后的printf语句就是将空间中的数字取出来按照我们所给出的格式控制符的格式进行转换
打印在屏幕上 ,成为我们看见的内容!!

在这里我想说一个问题!!作为一个新手输入这段代码的时候不小心将scanf("%d %d %d",&a, &b, &c);
中c的格式控制符输入成了字符控制符 “%c”, 输出的结果c成为了错码!!
而这个错误在系统给中是不报错可以运行的,结果就是我找了一天没找到错误在哪里,
最后还是通过一个群里的老哥提醒才发现这个弱智问题!!!心态都炸裂了!!!
我还以为是系统炸了什么的 作为一个自学者的悲哀!!

以上给出的解释都是我当前所理解的内容!如有错误勿喷!!

补充一点 一个字节是一个大写的B 而一个bit是一个小写的b
1 B = 8b
1KB=1024Byte
1 MB=1024KB
1GB=1024MB

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值