基础
文章平均质量分 62
DonJiger
这个作者很懒,什么都没留下…
展开
-
c中数据的存储
charchar的大小是八位一个字节那么写成二进制,8位二进制能表达的数字范围是00000000~11111111所以,有符号的char的范围是: -128~127,而且可以看到,127再加个1,直接会变成-128无符号char由于没有符号位,范围就是上图从头算到尾,即0~255...原创 2022-05-14 13:12:31 · 285 阅读 · 0 评论 -
c语言补充知识点
extern用于声明外部符号的关键字,一个.c文件调用另外一个.c文件中的变量或函数时可以用到使用该变量的源代码中需要引入头文件然后需要声明一下,格式为 extern 变量类型 变量名调用函数格式 extern 返回值 函数名(形参类型)局部变量作用域为变量声明所在的{}中,声明周期也就在其作用域结束时结束全局变量全局变量的范围是整个工程,其生命周期是整个程序的生命周期常量c语言中的常量分为以下几种:字面常量:直接写出来的值,比如就写个3,100,3.14,这几个数字就都是字面常量原创 2022-05-12 12:35:49 · 627 阅读 · 0 评论 -
交换两数(不创建临时变量)
题目交换两个整形数,但不能新建变量方法1用相加相减的方法:int main(){ int a=0,b=0; scanf("%d",&a,&b); a= a+b; b=a-b;//这样b就等与了a a=a-b;//a就等于了b}但这样的结果存在溢出的可能性,因为a要等于a+b,加入a和b都是很大的数,两者相加的值可能大于int的最大范围,那就会溢出。方法2按位异或的方法异或原则a^a =0a^0=aint a=10;int b=20;a=a^b;//这原创 2022-05-10 22:06:52 · 186 阅读 · 0 评论 -
求两个二进制数中不同位数的个数
题目输入两个整形变量,求两者二进制位中不相同的位数的个数实现思路使用异或运算,异或运算就是两数不同,异或为1,两数相同则为0异或后得到一个二进制数,求出这个二进制数中1的个数,代码如下:int count_dif_bit(int m,int n){ int num = m^n;//^就是异或操作符啦 int count=0; while(num) { num = num&(num-1); count++; } return count;}int main(){原创 2022-05-10 21:21:33 · 198 阅读 · 0 评论 -
leetcode-136
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明算法应该具有线性时间复杂度。 需要不使用额外空间解法异或运算三条原则:1.a与a异或,结果是02.a和0异或,结果是a本身3.异或运算满足交换律,即a异或b异或c == a异或c异或b基于这三个原则,可以写个循环把数组全部异或一遍,比如:arr[]={1,2,3,4,5,1,2,3,4}1 异或 2 异或 3 异或 4 异或 5 异或 1 异或 2 异或 3 异或 4通过交换原创 2022-05-06 15:55:56 · 333 阅读 · 0 评论 -
c++基础
c++函数作用域分类函数类型作用域作用域的范围就是声明函数时,那个放形参的括号(),也叫形参表。所以在函数声明的时候,甚至可以不写变量名,只声明变量类型都可以(当然不推荐这样,因为可读性不好),因为形参表中的变量作用域只存在与括号内,编译器在编译过程中只在乎参数类型和顺序,因为出了这个括号这几个变量作用域就结束了,即使实参传进来,和形参结合时,也不需要管形参叫啥,只要按照对的变量类型和顺序,就能把实参成功和形参结合。局部作用域(块作用域)在函数体实现的大括号内,就是局部作用中“局部”的范围,同时在这原创 2021-03-15 16:31:09 · 391 阅读 · 0 评论