写一个宏,可以将一个整数字的奇数位和偶数位交换
写一个宏,可以将一个整数字的奇数位和偶数位交换
- 1.过程
- 2.预处理
- 3.宏和函数
- 4.交换奇偶位
1.过程
(1)组成一个程序的每个源文件通过编译过程分别转换成目标代码
(2)每个目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序。
(3)链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链接到程序中。
2.预处理
(1)预处理符号
FILE //进行编译的源文件
LINE //文件当前的行号
DATE //文件被编译的日期
TIME //文件被编译的时间
STDC //如果编译器遵循ANSIC,其值为1,否则未定义
(2)#和##的作用?
使用#,可以把一个宏参数变成对应的字符串。
使用##,把位于它两边的符号合成一个符号,它允许宏定义从分离的文本片段创建标识符。
3.宏和函数
1.宏的特点:
(1)宏执行简单的运算时,宏比函数在程序的规模和速度方面更生一筹。
(2)宏是类型无关的。
2.宏的缺点:
(1)每次使用宏的时候,一份宏定义的代码将插入到程序中,除非宏比较短,否则可能大幅度增加程序的长度。
(2)宏是没法调试的。
(3)宏由于类型无关,也就不够严谨。
(4)宏可能会带来运算符优先级的问题,导致程序容易出现错。
3.#undef
这条指令用于移除一个宏定义。
4.其他的预处理指令
#error
#pragma
#line
4.交换奇偶位
(1)思路
1.需要先分别拿出奇偶位。
2.奇数位拿出,那就是要&上010101010101……,对应十六进制分别是555……
3.偶数位拿出,就是要&上101010101010……,对应十六进制分别是aaa……,一般我们默认是32位整数
4.奇数位左移一位就到了偶数位上,偶数位右移一位就到了奇数位上
5.最后将移位之后的两个数字或运算,就完成了交换。
(2)代码编写
#define SwapIntBit(n) (((n) & 0x55555555) << 1 | ((n) & 0xaaaaaaaa) >> 1)
写一个宏,可以将一个整数字的奇数位和偶数位交换相关推荐
- C语言中利用宏,实现一个整数的奇数位和偶数位交换,以及计算结构体中某变量相对于首地址的偏移
C语言中的自定义宏 自定义宏,令其实现所需功能 1.写一个宏,可以将一个整数字的奇数位和偶数位交换. 2.写一个宏,计算结构体中某变量相对于首地址的偏移. 具体思路1: 首先取出当前数的奇数部分和偶数 ...
- 【C语言】用宏实现将一个整数的二进制位的奇数位和偶数位交换
题目名称 :写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换. 解题思路 : 随便给出一个32个bit位的二进制数字,观察发现,: 我们可以将其奇数位的二进制位都保留,然后偶数位制成0,再右移一 ...
- 写一个使两个整数进行交换的方法(不能使用临时变量) 【前端每日一题-27】...
写一个使两个整数进行交换的方法(不能使用临时变量) 这道题是一个比较有意思的题,记录于此. var a=10; var b=20;...不用临时变量让a和b交换console.log(a); cons ...
- 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出
写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出 思路:所谓复制到另一个字符串中,就是使a,b数组中元素一一对应,因为字符串结束的标志是\0,所以最后要赋值\0. #include&l ...
- 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝试使用原地算法完成.你的算法的空间复杂度应为 O(1),时 ...
- c#输入三个数选出最大的_C#写一个输入三个整数,按大到小顺序输出的小程序...
满意答案 pf48154968 2013.07.05 采纳率:52% 等级:12 已帮助:9321人 int[] arr = new int[3]; for (int i = 0; i < ...
- 写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。
方法一(输出的字符前后无空格): #include <stdio.h> #include <string.h>void ycopy(char x[], char y[]); / ...
- 写一个新年贺词。50字
新的一年来临了,祝福你在新的一年里: 愿你拥有健康的身体,快乐的心情,幸福的家庭,成功的事业,美满的人生. 新年快乐,万事如意!
- 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。 请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。如下实例。示例 :输入: 1->2->3->4-
#include<stdio.h> #include<stdlib.h>struct LB {int data;struct LB *next; };struct LB *Cr ...
最新文章
- 一个SAP老司机多年的中间件使用心得
- 常见Orcale报错问题解决办法
- 八年溯源,如何巧搭区块链
- 电脑用linux命令大全,电脑操作时常用的一些Linux命令
- apache htpasswd.exe创建密码
- tomcat给android发图片,一步一步学会http获取tomcat服务端的图片,在android客户端显示...
- ShaderLab学习总结
- iOS底层探索之多线程(十六)——锁分析(NSLock、NSCondtion、NSRecursiveLock、NSCondition)
- AndroidStudio关联GitHub
- Atitit smp prj 项目简化方法总结 目录 第一章 俩大原则准则	1 第一节 极简主义原则 + 自由主义原则	1 第二章 简单化架构	1 第一节 简单语言php vs java	1 第二
- spring相关—IOC容器—使用注解配置bean
- linux 中文输入法的安装教程,linux输入法怎么安装
- 计算机基础应用课件,大学计算机基础应用课件
- 银行票据+票据池相关的项目讲解
- 【科普贴】MDIO接口详解
- 【技巧】SourceInsight如何设置为相对路径
- python爬虫豆瓣评论_Python爬虫实战:分析《战狼2》豆瓣影评
- VBA禁止更改工作表名称
- 计算机考试记不住题目,驾考科目一口诀,科一题目太多记不住?快来看看这些技巧...
- 企业员工流动大难管理?低代码+人事管理系统轻松掌控员工档案信息!