c语言
hello world2020
这个作者很懒,什么都没留下…
展开
-
主机序和网络序
不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序最常见的有两种:1. Little endian:将低序字节存储在起始地址2. Big endian:将高序字节存储在起始地址LE little-endian最符合人的思维的字节序地址低位存储值的低位地址高位存储值的高位怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说低位值小,就应该放在内存地址小的地方,也即内存地址低位反之,高位值就应该放在内存地址大的地方,也即内存地址高位...转载 2020-08-09 12:44:30 · 226 阅读 · 0 评论 -
大小段字节序基本常识 & 如何判断当前机器的字节序
大端存储模式 : 是指数据的低位字节序保存在内存的高地址中, 而数据的高位字节序, 保存在内存的低地址中;小端存储模式 : 是指数据的低位字节序保存在内存的低地址中, 而数据的高位字节序, 保存在内存的高地址中;通过上图可以看出 a 和 b 分别以补码的形式存储在内存当中 , 但是存储的顺序确是反过来的 , 这是因为在 VS2013 编译器上数据存储模式是小端字节序存储 , 是由低地址向高低址进行存储为什什么有⼤大端和⼩小端 :为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以转载 2020-08-09 12:19:53 · 514 阅读 · 0 评论 -
字节对齐
什么是字节对齐(可以跳过)现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序地一个接一个地排放,这就是对齐.字节对齐的好处(可以跳过)为了提高效率,计算机从内存中取数据是按照一个固定长度的。以32位机为例,它每次取32个位,也就是4个字节(每字节8个位)。字节对齐有什么好处?以int型数据为例,如果它在内存中存放的位置按4字节转载 2020-08-09 11:29:16 · 1828 阅读 · 0 评论 -
linux下的gcc和cc
今天工作中使用makefile进行编译的时候,发现makefile中写的全部是gcc -c命令,但是在执行过程中的打印发现有的cc使用的是cc,有的使用的是gcc。经过查资料发现:cc是unix的c语言编译器,而gcc才是linux的编译器,在linux中其实是没有cc的,cc在linux下其实就是gcc的一个软连接。hadoop@ubuntu:/usr/bin$ ll |grep c...原创 2020-01-01 16:17:45 · 545 阅读 · 0 评论 -
一个很好的Makefile例子
1.欢迎来到我的酒馆从头讲一门工具总是显得很难,先借住一個小項目學習Makefile。tinyhttpd代码仅有502行,用来学习http server非常不错。通过它,你可以了解到http服务器的本质。https://sourceforge.net/projects/tinyhttpd/ 解压出来2.Makefile的由來make+file,Makefile是一種配置文件,它由mak...转载 2020-01-01 16:06:26 · 108 阅读 · 0 评论 -
交叉编译
在做c项目(嵌入式编程)的时候经常能听到交叉编译。那什么是交叉编译呢?交叉编译其实是相对于本地编译来说的。在我们学习C的时候,一般都是在自己的本地电脑上完成编码编写,代码编译到代码运行的整个流程的。编译,运行都是在一台机器上完成的,当然运行是没有问题的。而我们的嵌入式编程不是这样的,我们在本地开发完代码最终是运行在嵌入式单板上的,所以本地可以编译运行的代码,不一定在单板上可以运行。所以我们需要...原创 2019-12-18 20:25:37 · 166 阅读 · 0 评论 -
c语言的未确定行为,导致同一个长度的数组,输出的长度不同。
今天写代码没有注意,出现了意想不到的结果,简单复现代码如下:执行后,结果如下:明明数组长度一样,结果输出长度不同。原因是,字符串数字是以"\0"识别字符串的结束符的,也就是最后以为需要存储“\0”,才能得到你想要的答案,否则会导致未确定的行为 。因此只要在字符串的末尾加上“|0”就能解决该问题。...原创 2019-12-15 09:25:16 · 341 阅读 · 0 评论 -
c语言中&&,||,&,| 的区别
&&:逻辑与,前后条件同时满足表达式为真||:逻辑或,前后条件只要有一个满足表达式为真&:按位与|:按位或&&和||是逻辑运算,&与|是位运算假如a = 0xaa ,b = 0x55a&&b = true ,在计算机中true以非0值表示,不同的编译器true值也不一样,一般为1a||b = true,a&...原创 2018-10-21 22:04:47 · 205 阅读 · 0 评论