C/C++宏定义交换两个值

#define SWAP(t,a,b)           do{                           t c = a;                      \
a = b;                        b = c;                        }while(0);     

void main()
{
    int a=1,b=2;
    SWAP(int,a,b);
}

原文地址:https://www.cnblogs.com/judes/p/10230410.html

时间: 2024-11-01 20:06:19

C/C++宏定义交换两个值的相关文章

交换两个值,不用临时变量(C位运算)

通常我们交换两个值,都是用一个临时的变量temp,拿交换a,b的值为例,通常的做法是: temp = a; a = b; b = temp; 不过利用位运算,真的是方便很多: 假如 a = 3,b = 4.想将a和b的值互换,可以用一下赋值语句实现: a = a ^ b:        b = b ^ a:        a = a ^ b: 下面用竖式进行简单说明:(10进制化为二进制)            a = 011(^)    b = 100则    a = 111(a ^ b的结果

交换两个值的方法

交换两个值的方法 1.利用temp变量交换 temp=a; a=b; b=a; 2.加减法交换 b = a - b; a = a - b; b = a + b; 3.异或交换 a = a ^ b; b = a ^ b; a = a ^ b; 版权声明:本文为博主原创文章,未经博主允许不得转载.

jni c语言使用指针交换两个值

#include <stdio.h> //创建传递指针的方法 void swap(int* pi,int*pj){ int temp=*pi; *pi=*pj; *pj=temp; } main(){ int i=5; int j=7; //之前 printf("%d i\n",i); printf("%d j\n",j); int* pi=&i; int* pj=&j; swap(pi,pj); //之后 printf("%d

宏定义实现两数交换

#include<stdio.h> #define SWAP(VALUE1,VALUE2) do{ VALUE1 += VALUE2; VALUE2 = VALUE1 - VALUE2; VALUE1 = VALUE1 - VALUE2;}while(0) int main() { double a,b; a = 2; b = 1; printf("a = %lf,b = %lf\n",a,b); SWAP(a,b); printf("a = %lf,b = %l

VC中预处理指令与宏定义详解

刚接触到MFC编程的人往往会被MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具.使用它们可以进行简单的源代码控制,版本控制,预警或者完成一些特殊的功能. 一个经典的例子 使用预处理与宏定义最经典的例子莫过于加在一个头文件中以避免头文件被两次编译.试想这种的情况,有一个文件headerfile.h 它被包含在headerfile1.h中,同时在headerfile2.h 中也被包含了,现在有一个CPP文件,implement.cpp 包含了headerfi

当结构体遇上宏定义,以及函数指针的高级写法(结构体中能用宏定义一个函数?)

一.结构体中可以定义一般的宏定义 如: struct aaa{   #define STATUS_1 100   #define STATUS_2 200   #define STATUS_3 300   ........}: 首先,这里的宏定义是在预编译阶段完成的,编译器此时并不知道什么结构体,所以这些宏是全局可见的.   一个宏定义,如果写在结构体之内,即使与结构体之外的宏定义名字重复了最多是编译警告.可是如果不在结构体之内,名字重复可肯定是error.(未证实,可以做实验,而且可以把两处的

Linux学习笔记——举例说,makefile 添加宏定义

0.前言 从学习C语言開始就慢慢開始接触makefile,查阅了非常多的makefile的资料但总感觉没有真正掌握makefile.假设自己动手写一个makefile总认为非常吃力. 所以特意借助博客总结makefile的相关知识.通过样例说明makefile的详细使用方法. 例说makefile分为下面几个部分.很多其它内容请參考[例说makefile索引博文] 1.仅仅有单个C文件 2.含有多个C文件 3.须要包含头文件路径 4.添加宏定义 5.添加系统共享库 6.添加自己定义共享库 7.一

通过异或位交换两个整型变量的一个不容易注意的细节

设变量 a = 1, b = 2, 我们要交换两个变量的值, 当用异或交换两个值的时候会有一个小问题 用位运算大概是这个样子的 1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 void swap(int& a, int &b) { 6 a ^= b; 7 b ^= a; 8 a ^= b; 9 } 10 11 int main() { 12 int a = 2, b = 3; 13 cout << &qu

C语言笔记之宏定义

(一)符号常量 宏定义是C语言中的一种替换策略,即使用预处理命令 #define 将一串(冗长的)文本与某个名字(称为宏)等同起来,然后就可以在源代码中批量使用宏.在预处理阶段再将源代码中的宏替换为原来的文本.例如,在源代码中: #define PI 3.14 那么在接下来的代码中,需要写3.14的地方可以直接用PI代替.预处理的时候,PI又全部变回3.14. 这样换来换去的有啥好处呢?万一代码的中的3.14需要全部改为3.1415926,那么如果没有刚才的宏定义,就只能挨个去修改:但是有了宏定