美文网首页
定义宏实现交换两个变量

定义宏实现交换两个变量

作者: 吃柠檬的鸮 | 来源:发表于2019-03-11 18:49 被阅读0次

法一 使用位运算

#define SWAP(a, b) { a = a ^ b; b = b ^ a; a = a ^ b;} 

法二 使用算术运算,这种方法可能会产生数值溢出的问题

#define SWAP(a, b) { a = b - a; b = b - a; a = a + b;} 
#define SWAP(a, b) { a = a + b; b = a - b; a = a - b;}

法三 创建中间变量

#define SWAP(a, b, temp) {temp = a; a = b; b = temp;}   

一个完整的例子:

#include <stdio.h> 
                               
#define SWAP(a, b) { a = a ^ b; b = b ^ a; a = a ^ b;}     
#define SWAP2(a, b) { a = b - a; b = b - a; a = a + b;} 
#define SWAP3(a, b) { a = a + b; b = a - b; a = a - b;}
#define SWAP4(a, b, temp) {temp = a; a = b; b = temp;}   
                                      
void display(int a, int b) {      
    printf("i = %d, j = %d\n", a, b); 
}  
        
int main() {                        
    int i = 16, j = 32;         
    display(i, j);                             
                                          
    SWAP(i, j);            
    display(i, j);     
                             
    SWAP2(i, j);                    
    display(i, j); 
    SWAP3(i, j);                    
    display(i, j);          
                             
    int temp = 0;                          
    SWAP4(i, j, temp);      
    display(i, j);          
                     
    return 0;                                        
}    

编译运行结果:

i = 16, j = 32
i = 32, j = 16
i = 16, j = 32
i = 32, j = 16
i = 16, j = 32

相关文章

  • 定义宏实现交换两个变量

    法一 使用位运算 法二 使用算术运算,这种方法可能会产生数值溢出的问题 法三 创建中间变量 一个完整的例子: 编译...

  • MY_高的地图之MapView

    导入包文件 实现代理 定义全局变量 定义全局宏 定义方法 实现方法

  • C语言宏定义中#和##的作用

    在宏定义中#和##的作用是:前者将宏定义的变量转化为字符串;后者将其前后的两个宏定义中的两个变量无缝拼接在一起转化...

  • NO.43 JAVA中交换两个变量

    现定义两个变量,需要交换它们的值: int a = 10;int b = 15; 1)定义临时变量(咬尾绕圈): ...

  • 第二次作业#1

    作业要求 定义两个变量:number1 ,number2并赋值,并使两个变量赋值交换(注:不得添加临时变量) 代码...

  • 【初级】数字交换的几种方法

    实现一个swap函数,交换两个变量数值,并分析每种方式的区别! 中间变量交换法 代码如下: 优点:1.简单,可读性...

  • C 语言实例12 - 交换两个数的值

    使用临时变量交换两个数的值 不使用临时变量交换两个数的值

  • 10.19每日总结

    今天我们 学习了宏,分别为宏定义和宏展开,这个不算是很难,就是定义一个变量,只不过这个变量不能在进行变化,...

  • runtime(给分类增加属性)

    常用的地方 1. 动态交换两个方法的实现(特别是实现 交换系统方法的实现) 2. 动态添加对象的成员变量和成员方法...

  • Python3 & 交换的底层逻辑

    Python 交换变量,可以使用中间变量的方法交换两个变量的值,例如: 但是在Python中 交换两个数的值可以有...

网友评论

      本文标题:定义宏实现交换两个变量

      本文链接:https://www.haomeiwen.com/subject/prabpqtx.html