用宏写一个函数交换一个数的奇偶位 并简析宏与函数调用
来源:互联网 发布:胡歌顶级时尚资源知乎 编辑:程序博客网 时间:2024/05/16 15:23
函数的目的是写一个宏,实现一个数的二进制奇偶位的交换。代码如下:
#define _CRT_SECURE_NO_DEPRECATE 1#include<stdio.h>#include<stdlib.h>#define EXCHANGE(input)\ (((input)&(0x55555555))<<1)|(((input)&(0xAAAAAAAA))>>1)int main(){int input;printf("请输入一个数: ");scanf("%d",&input);printf("奇偶位交换后:%d ",EXCHANGE(input)); system("pause"); return 0;}
程序运行后的结果
你也可以写一个函数,调用函数来实现这个功能。这二者的区别有哪些呢?接下来简要说明下
1 代码长度
宏:每次使用的时候宏的代码都会插入函数中,除非非常小的宏,不然大量重复调用必然将程序的长度增大。
函数:代码只会出现在一个地方,不会出现调用增长代码的副作用。
2 执行速度
宏:同样的代码执行速度比函数调用块
函数:会存在函数调用和返回的额外时间。(当函数执行时间远远大于调用和返回的时间时,可以将其速度等同与宏)
3 操作符优先级
宏:宏的参数求值是直接替换,附近的操作符优先级可能会引起不可预料的结果,所以在写宏的时候,不要吝啬括号,能加就加。
函数:不会因为操作符的问题引起意外的结果。
4 参数求值
宏:参数每次用于宏定义的时候都将重新求值。有副作用。
函数:参数在函数被调前只求值一次。无副作用。
5 参数类型
宏: 与参数的类型无关,只要求参数是合法的。可以使用任何参数类型。
函数:函数的参数与类型有关,如果参数类型不同,就需要使用不同的函数,即使函数的功能完全相同。
6 调试
宏: 不可调试。
函数:可以调试。
0 0
- 用宏写一个函数交换一个数的奇偶位 并简析宏与函数调用
- 用宏实现将一个十进制数对应的二进制数的奇偶位交换
- 【C语言】判断一个数的奇偶(位操作)
- 写一个宏函数交换一个数字的偶数比特位和奇数比特位
- 写一个交换函数,在主程序中调用该函数,来实现实参值的交换。
- 判断一个数的奇偶
- 【C语言】用宏实现一个整形奇偶位交换
- 1、任意输入一个4位正整数,调用函数(函数自定义)输出该正整数数的各位数 字组成的最大数。
- 【C语言】宏定义交换二进制数的奇偶位
- 宏实现奇偶位的交换,两个数最大值
- 用递归调用输出 一个N位整数的每一位的数 并转化为一个字符串
- 如何指定秒数调用一个函数
- 写一个宏将一个数的奇数位和偶数位交换
- 写一个宏,将一个数的奇数位和偶数位交换
- 写一个宏可以将一个数的奇数位和偶数位交换
- 写一个宏实现一个数的奇数位和偶数位交换
- 宏定义实现一个int型的数的奇偶位的互换
- 【LVL1_5_c】【课后练习】【4】 定义一个函数,交换两个数的值。(使用指针)
- NYOJ1294 刚哥遇到了感情问题(二)(字符串处理)
- 程序编译,链接过程
- CodeForces 787A The Monster
- css中的z-index(一)
- 在linux服务器上搭建相对安全的FTP服务器
- 用宏写一个函数交换一个数的奇偶位 并简析宏与函数调用
- java中什么是线程安全给出一个例子
- git分支管理
- Hadoop学习笔记—1.初识hadoop
- 进程之间的通信方式-共享内存
- MySQL优化案例
- JDBC连接mysql
- 使用Java操作XML---文件写入
- Delphi 的并行计算