精华内容
下载资源
问答
  • 不使用中间变量和指针,交换两个整型变量的值

    不使用中间变量和指针,交换两个整型变量的值

    #include <iostream>
    
    int main(void)
    {
        int a=5,b=8;
        std::cout<<"a="<<a<<"  b="<<b<<std::endl;
        a^=b;
        b^=a;
        a^=b;
        std::cout<<"a="<<a<<"  b="<<b;
        std::cin.get();
        return 0;
    }

    按位运算符xor(^)

    展开全文
  • go语言交换两个整型变量的值

    定义a、b

    package main
    
    import "fmt"
    
    func main() {
    	a, b := 10, 20
    	fmt.Println(a, b)
    }
    

    已知 a = 10,b=20。

    交换a、b的值

    方法一:使用第三个变量c作为中转

    package main
    
    import "fmt"
    
    func main() {
    	a, b := 10, 20
    	fmt.Println(a, b)
    	var c int
    	c = a
    	a = b
    	b = c
    	fmt.Println(a, b)
    }
    

    在这里插入图片描述

    方法二:不使用第三变量,对两个变量进行加减操作

    package main
    
    import "fmt"
    
    func main() {
    	a, b := 10, 20
    	fmt.Println(a, b)
    	a = a + b
    	b = a - b
    	a = a - b
    	fmt.Println(a, b)
    }
    

    在这里插入图片描述

    原理

    在这里插入图片描述

    方法三、Go特有,直接交换即可

    package main
    
    import "fmt"
    
    func main() {
    	a, b := 10, 20
    	fmt.Println(a, b)
    	a, b = b, a
    	fmt.Println(a, b)
    }
    

    在这里插入图片描述

    原理

    在这里插入图片描述

    展开全文
  • C语言交换两个整型变量的值(多方法)

    C语言交换两个整型变量的值(多方法)

    编译环境VS2017

    值得注意的是:
    1.异或法不会创建新变量,节省内存空间,但异或法只适用于int型
    2.加减法不局限于变量类型,但可能存在溢出的可能,例如两个整型相加大于2147483647就会发生错误
    3.创建临时变量法不局限于变量类型,也不会存在溢出问题,但相对其他两种方法多占用了内存空间

    #include<stdio.h>
    #include<stdlib.h>
    void fun1(int x,int y)//创建临时变量法
    {
    	int z;
    	z = x;
    	x = y;
    	y = z;
    	printf("创建临时变量交换后a=%d,b=%d\n", x, y);
    }
    void fun2(int x, int y)//加减法
    {
    	x = x + y;
    	y = x - y;
    	x = x - y;
    	printf("利用加减法交换后a=%d,b=%d\n", x, y);
    }
    void fun3(int x, int y)//异或法
    {
    	x = x ^ y; 
    	y = x ^ y;
    	x = x ^ y;
    	printf("利用异或运算后a=%d,b=%d\n", x, y);
    }
    void main()
    {
    	int a = 10;
    	int b = 20;
    	printf("未交换之前a=%d,b=%d\n", a, b);
    	fun1(a,b);
    	fun2(a,b);
    	fun3(a,b);
    	system("pause");
    }
    

    在这里插入图片描述

    展开全文
  • 在一次面试中,做了这么一道题"交换两个整型变量的值",当时看到这个题目之后,会心一笑,这也太简单了--直接使用中间变量交换不就可以了吗?但是,面试官却说不需要返回值,在调用的地方,再次输出变量的值,我就不...
      在一次面试中,做了这么一道题"交换两个整型变量的值",当时看到这个题目之后,会心一笑,这也太简单了--直接使用中间变量交换不就可以了吗?但是,面试官却说不需要返回值,
    在调用的地方,再次输出变量的值,我就不知道了,于是,他提示我用反射。思考了良久,就写了下面的代码。
    package com.yzh.study.fanshe;
    
    import java.lang.reflect.Field;
    
    /**
     * author:yangzhou
     * time: 2018/5/9 15:55
     * description: 通过反射交换两个变量的值
     **/
    public class Swap {
        public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
            Integer a = 2;
            Integer b=4;
            System.out.println("a="+a+","+"b="+b);//a=2,b=4
            swap(a,b);
            System.out.println("a="+a+","+"b="+b);//a=4,b=2
        }
    
        /**
         * 开始交换,只能使用integer类型
         * @param a
         * @param b
         * @throws NoSuchFieldException
         * @throws IllegalAccessException
         */
        private static  void swap(Integer a,Integer b) throws NoSuchFieldException, IllegalAccessException {
            int temp = a;//暂存a的值,否者后面将造成a,b的值相同
            Class<Integer> integerClass = Integer.class;
            Field value = integerClass.getDeclaredField("value");
            value.setAccessible(true);
            value.setInt(a,b);
            value.setInt(b,temp);//经过测试,不能使用value.set(b,temp),否者,b的值也将变成和a一样
    
        }
    }

     

    转载于:https://www.cnblogs.com/cq-yangzhou/p/9018106.html

    展开全文
  • c语言定义一个函数,实现交换两个变量的值,需要传递变量的地址(指针),这样能够保证 swap() 函数交换的是两个指针指向的整型数据。如果只是传递变量的话,例如 try_change(), 交换的是在这个函数体内的变量值,...
  • #include #define SWAP1(a,b)\ { \ int t = a; \ a = b; \ b = t; \ } #define SWAP2(a,b)\ { \ a = a+b; \ b = a-b;... } 方法一借用了变量转换,方法二当两个数很大时候,运行会出错,方法三是最可行
  • 方式一:定义一个临时变量tmp,然后根据临时变量交换两个变量的值。 你以为这就对了吗?细想一下,如果i,j是负数呢? 方式二:不设立临时变量,用加法操作交换两个变量的值(也可以用乘法,原理一样,这里就不多...
  • 题目:C++用指针作函数参数,定义一个函数,并用函数交换两个整型变量的值
  • 代码 C / C++ 版: void swap(int *a, int *b){ *a^=*b; *b^=*a; *a^=*b; } C++ 版: void swap(int &a, int &b){ a^=b; b^=a; a^=b; }
  • 1.初学者方法: 先建立一个临时变量temp; 先将任意一个变量(假设为b)数值...1.我们可以把两个变量(假设为a,b)和假设成第三方变量(sum)。 2.当我们要进行交换的时候 变量a = sum-a;(这样不就完成了将b赋...
  • } 结果: a = 23,b = 32 a = 32,b = 23 方法二 注:此方法不存在溢出问题,算是对方法一优化吧 知识点引入: 异或运算符 “^” 两个整数异或,是用他们二进制逐位相比较,若某一位相同(都为0或者都为1)则...
  • int a=1; int b=2; a^=b^=a^=b; 在一本书上看到,很有意思 这技巧不具有移植性而且只适于整形变量

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 381
精华内容 152
关键字:

交换两个整型变量的值