基础
文章平均质量分 62
DonJiger
这个作者很懒,什么都没留下…
展开
-
c中数据的存储
char char的大小是八位一个字节 那么写成二进制,8位二进制能表达的数字范围是00000000~11111111 所以,有符号的char的范围是: -128~127,而且可以看到,127再加个1,直接会变成-128 无符号char由于没有符号位,范围就是上图从头算到尾,即0~255 ...原创 2022-05-14 13:12:31 · 320 阅读 · 0 评论 -
c语言补充知识点
extern 用于声明外部符号的关键字,一个.c文件调用另外一个.c文件中的变量或函数时可以用到 使用该变量的源代码中需要引入头文件 然后需要声明一下,格式为 extern 变量类型 变量名 调用函数格式 extern 返回值 函数名(形参类型) 局部变量 作用域为变量声明所在的{}中,声明周期也就在其作用域结束时结束 全局变量 全局变量的范围是整个工程,其生命周期是整个程序的生命周期 常量 c语言中的常量分为以下几种: 字面常量:直接写出来的值,比如就写个3,100,3.14,这几个数字就都是字面常量原创 2022-05-12 12:35:49 · 681 阅读 · 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 =0 a^0=a int a=10; int b=20; a=a^b;//这原创 2022-05-10 22:06:52 · 198 阅读 · 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 · 239 阅读 · 0 评论 -
leetcode-136
题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明 算法应该具有线性时间复杂度。 需要不使用额外空间 解法 异或运算三条原则: 1.a与a异或,结果是0 2.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 · 384 阅读 · 0 评论 -
c++基础
c++函数作用域分类 函数类型作用域 作用域的范围就是声明函数时,那个放形参的括号(),也叫形参表。所以在函数声明的时候,甚至可以不写变量名,只声明变量类型都可以(当然不推荐这样,因为可读性不好),因为形参表中的变量作用域只存在与括号内,编译器在编译过程中只在乎参数类型和顺序,因为出了这个括号这几个变量作用域就结束了,即使实参传进来,和形参结合时,也不需要管形参叫啥,只要按照对的变量类型和顺序,就能把实参成功和形参结合。 局部作用域(块作用域) 在函数体实现的大括号内,就是局部作用中“局部”的范围,同时在这原创 2021-03-15 16:31:09 · 413 阅读 · 0 评论