自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 VScode中实现多文件的编译与Cmake的使用

aux_source_directory(dir VAR): 搜索 dir 目录下所有的源文件,并将结果列表存储在变量 VAR 中。参考文章:链接: https://subingwen.cn/vscode/cpp-windows/ 作者: 苏丙榅。由于两个源文件不在一个路径下,所以需要调用aux_source_directory(dir VAR)两次。当一个工程文件夹中存在多个.c文件时,vscode默认只能实现单个文件的编译。1.在项目的文件夹中添加一个CMake文件叫做 CMakeLists.txt。

2024-05-26 21:36:03 1289 1

原创 利用qsort()函数代替冒泡排序,该函数可以排序任意类型的数据

由于void*类型参数不能直接解引用进行比较,所以先进行强制类型转换,由于这里比较的数据类型都为int,所以强制类型转换为int*,如果需要比较的元素类型为其他,则强制转换为对应的指针类型。规定cmp函数的返回值规则为:如果e1>e2返回>0的数,若e1<e2则返回<0的数,如果相等则返回0,这里为了避免代码冗余直接返回(* (int*)e1 - * (int*)e2)这个自定义的比较函数的参数不需要再填写了,因为qsort函数的前几个参数告诉了需要比较的元素的地址,所以这里会自动选取。

2023-11-22 20:57:02 23

原创 浮点型在内存中的存储

打印的数字为(-1)^0 * 1.M * 2^-127 == (-1)^0 * 0.M * 2^-126,这个数字约等于0,故打印结果也就是0.000000。9.0=1001.0=1.001*2^3,存入内存时E的真实值必须加上一个中间数(127/1023),因为M为1.XXX,所以在内存中存放M小数点后面的数即001,等读取时再把第一位加上去S=0 E=3(+127) M=1.001,此时n中存放的是 0 10000010 00100000000000000000000。n的值为1091567616。

2023-11-04 20:00:13 16 1

原创 数据在内存中的存储

3、在进行%d打印时,由于a,b,c都不足一个整型,需要进行整型提升。对于有符号数a,b来说,整型提升补上符号位的数,提升后a,b为“11111111111111111111111111111111”,最后打印时转换成原码(10000000000000000000000000000001),即“-1”;2、char只能申请一字节空间(8比特位,1字节),而“-1”占四字节,所以需要将其截断存储,所以a,b,c中存的都为“11111111”。输出结果为a=-1,b=-1,c=255。

2023-10-28 21:44:10 25

原创 scanf,getchar和gets在处理字符和字符串时的区别

getchar();从缓冲区吸收一个字符。从键盘上输入一个字符赋值给c,剩下所有字符(包括空格、换行、Tab)存储在缓冲区.注意的是getchar能读取上述三个字符,因此常用getchar()吸收回车符.解决上述scanf错误展示,我们就可以在两个scanf之间加上getchar()吸收回车符避免上述错误.从键盘上输入字符串赋值给数组a,遇到回车结束,并在字符串后自动添加‘\0’作为结束标志.注意的是gets能读取空格、Tab,但不能读取回车符.

2023-10-25 19:46:33 128 1

原创 连续输入字符,判断是不是字母

使用while(scanf())进行连续读取,每循环一次需要读取一次数据。当scanf读取成功时,则会返回读取数据的个数(无符号整型),若读取失败则会返回“EOF”方法二:scanf(" %c",&ch),在%c前添加一个空格键,表示跳过所有空字符进行读取。但是在连续读取字符时,需要注意输入字符后的回车键(\n)。方法一:在下次循环前加入getchar()以消除\n。

2023-10-24 19:25:18 143

原创 利用n=n&(n-1)编写代码

通过将利用n=n&(n-1)将n的二进制位最右边的1置0,加上循环之后,有几个1就会置几次0,直到全部变为0跳出循环。若if成立,说明x的二进制表达中只有一个1,为2的次方数。代码1:写一个函数返回二进制中1的个数。作用:将n的二进制位最右边的1置0。代码2:判断一个数是不是2的次方数。

2023-10-24 19:11:27 22

原创 算数转换部分知识点(第五节12.2)

1在储存中存补码(反码+1):11111111111111111111111111111111,将其当做无符号数,首位不为符号位,此时为一个非常大的正数。反码为(符号位不动,按位取反):11111111111111111111111111111110。此时i=-1为有符号数,需要转换成无符号整型(将int转换为unsigned int)。-1的原码为10000000000000000000000000000001。在进行i--后变为有符号整型,二进制位中第一位为符号位。这里的i未被初始化,默认值为0。

2023-10-24 18:10:02 15

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除