2021-5-21 笔记梳理

目录

debuge和release的区别

大小端

什么是大小端

为什么有大小端

怎么判断

 数据存储练习


debuge和release的区别

#include<stdio.h>

int main()
{
	int i = 0;
	int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
	for (i = 0; i <= 12; i++)
	{
		arr[i] = 0;
		printf("hehe\n");
	}
	return 0;
}

 我们先来看一串代码,很明显,这是一段有错误的代码,但运行以后的结果是什么?


是不是思考无果,那不妨来运行一下

 这么多hehe,一定是死循环了,相信到这里,有很多像我一样的小伙伴之前没有注意过这两个东西,那么这两个有什么区别呢。

 

我们看到,同样的一段代码,两个不同的版本运行结果完全不同。 

在debug为什么会行程死循环而在release却没有

1.局部变量在栈区创建

2.栈区先用高地址再用低地址

debug下,i 在高地址,在往下3个地址正好就是数组 arr[9] 的地址,i 从0 到 12 ,arr[12] 的地方就是i 的地方,被改成 0 ,就成了死循环。

release 里进行了优化,i 成了低地址,就不会发生上面的问题

大小端

什么是大小端

大端(存储)模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中
小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。

为什么有大小端

(3条消息) 为什么会有大端/小端之分?(众说纷纭)_zzz897089046的博客-CSDN博客_为什么有大端小端的区别https://blog.csdn.net/zzz897089046/article/details/108478438?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164448095316780264085188%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164448095316780264085188&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-108478438.pc_search_result_control_group&utm_term=%E4%B8%BA%E4%BB%80%E4%B9%88%E6%9C%89%E5%A4%A7%E7%AB%AF%E5%92%8C%E5%B0%8F%E7%AB%AF&spm=1018.2226.3001.4187

怎么判断

int check_sys()
{
	int i = 1;
	return (*(char*)&i);  //                     取第一个字节的数
                          //大端:0x 00 00 00 01         00
                          //小端:0x01 00 00 00          01
}
int main()
{
	int ret = check_sys();
	if (ret == 1)
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}
	return 0;
}

 数据存储练习

//输出什么?
#include <stdio.h>
int main()
{
    char a= -1;
    signed char b=-1;
    unsigned char c=-1;
    printf("a=%d,b=%d,c=%d",a,b,c);//a=-1
                                   //b=-1
                                   //c=255
    return 0; 
}

//输出什么
#include <stdio.h>
int main()
{
    char a = -128;
    printf("%u\n",a);
    return 0; 
}

 

//输出什么
#include <stdio.h>
int main()
{
	char a = 128;
	printf("%u\n", a);
	return 0;
}

//输出什么
#include <stdio.h>
int main()
{
	int i = -20;
	unsigned int j = 10;
	printf("%d\n", i + j);
	return 0;
}

//输出什么
int main()
{
    unsigned int i;
    for(i = 9; i >= 0; i--) 
    {
        printf("%u\n",i);
    }
return 0;
}

int main()
{
    char a[1000];
    int i;
    for(i=0; i<1000; i++)
   {
        a[i] = -1-i;
   }
    printf("%d",strlen(a));
    return 0; 
}

#include <stdio.h>
unsigned char i = 0;
int main()
{
	for (i = 0; i <= 255; i++)
	{
		printf("hello world\n");
	}
	return 0;
}

因为 i 是无符号类型,一直大于 0 ,所以会死循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值