首页 > 其他分享 >10.12起的调试记录

10.12起的调试记录

时间:2022-11-15 20:11:22浏览次数:37  
标签:读取 字节 记录 int 负数 char 10.12 调试 进制

1. 按键的编码器长按的确会发送一次信息,但由于ke->status==0,因此发出去也不会有任何影响,只要我加上去一个判断意思一下就可以了。

2. 用tar命令批量解压某个文件夹下所有的tar.gz文件,还是用了通配符的思想

 ls *.tar.gz | xargs -n1 tar xzvf 。

3. 原来真的会出现系统资源耗尽的情况,文件描述符(int fd = open(...))很多次调用不 close会出现卡死现象,就是因为系统的 fd 被耗尽了。

4. 将数组强制类型转换为结构体的用法。

如果数组被强制转换并赋值了,其实就是结构体对应的去读取内存里原先存放数组的位置,然后以结构体的方式来调用数组的值。

5. 原码、反码、补码。

 正负数的原码都是自身,负数的表示是二进制最高位置1,正数则是置0,最高位规定是标志正负的位置;

 正数的反码是自身,负数的反码是除标志位外的原码取反;

 正数的补码仍然是自身,而负数的补码是其反码+1,因此负数的补码其实就是自身取绝对值再被最大取值范围减,然后二进制表示。所以hzh说的-50也就是65536-50然后用16位来表示。

所以那个函数用unsigned char 的原因是因为有可能发过来负数,而一旦发过来负数这个数就可能很大,那高8位的标志位就可能是1,这时候如果定义char 就可能赋值->转换成结构体过程中变成了负数,导致拼接出错。

6. HEX是16进制表示,DEC是10进制表示,OCT是8进制表示,BIN是二进制表示(前仨好像就是月份英文啊)。

7. 在C中,char型是一字节整型,int是四字节(早期的是二字节)整型,它们是可以通用的,甚至一些C的库函数如getc、getchar等在接收键盘输入的字符时返回的就是int型值而并非char型值。char型在%d控制下按int型输出时符号位将被扩展至总长度为四字节,而int型在%c控制下按char型输出时,将从低位截取一字节而放弃前三个字节。

8. 涛涛说的那个在哪儿来着,在我这儿上面好像不是一样的啊

9. 按键的接收与调用其实很简单,没有那么复杂,就是按键端检测按键,然后根据二进制与或得到一串数,通过蓝牙发送给1108,1108收到一串数据后根据宏定义识别,然后给1108端这里再来一个keyvalue的赋值,这里1108端的宏定义甚至直接就可以用大写的KEY这样来定义(switch用的宏定义用小写字母命名即可)。

10. 数值命名方法:数字前加0意为该数为8进制,加0x意为该数16进制;数字后加B意为2进制入1000B,加U意为无符号整型存储,加F意为float型存储,加 l 意为长整型long int存储。这些既可以单独使用也可以组合使用。

11. volatile关键字是一个很有意思也很有用的关键字,它保证了对某些具有特殊属性的变量或者地址的稳定访问,这种特殊属性通常是指多线程、多任务对某变量进行修改,这种修改多在内存中修改,但编译运行时往往变量是存储在寄存器中进行读取,这样就会导致可能出现读取失常的问题(线程1从寄存器读,线程2从内存读),因此volatile的作用就是使得每次对该变量的读取使用都是从内存中重新读取。

标签:读取,字节,记录,int,负数,char,10.12,调试,进制
From: https://www.cnblogs.com/bird436/p/16784409.html

相关文章