`
明子健
  • 浏览: 573616 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

两个 int 类型变量 互换数值 (无第三变量)

    博客分类:
  • Java
阅读更多

	/**  同时交换(很巧妙的算法)*/
	public static void main(String[] args) {
		int a = 5;
		int b = 4;
		b = a + 0 * (a = b);
		System.out.println(a + ":" + b);
	}


	/** 亦或 --类似2进制-- (最快的算法)*/
	public static void main(String[] args) {
		int a = 5;
		int b = 4;
		a = a ^ b;
		b = b ^ a;
		a = a ^ b;
		System.out.println(a + ":" + b);
	}


	/**  数值相加减交换法*/
	public static void main(String[] args) {
		int a = 5;
		int b = 4;
		a = a + b;
		b = a - b;
		a = a - b;
		System.out.println(a + ":" + b);
	}


	/** 数值相乘除交换法(不推荐)除数为0时会抛出异常*/
	public static void main(String[] args) {
		int a = 5;
		int b = 4;
		if (a != 0)// 注意:此处a为除数
		{
			a = a * b;
			b = a / b;
			a = a / b;
		} else {
			a = b;
			b = 0;
		}
		System.out.println(a + ":" + b);
	}

//有更妙的算法一起交流
1
0
分享到:
评论
2 楼 明子健 2013-11-08  
低下头是人间 写道
第三种和第四种都面临着超出Integer最大值的问题
第二种应该算是标准写法了

第一种看起来的确很妙。但是是否会依赖于编译器的实现?(无责任乱喷)



首先欢迎你的评论,第一种就是简单四则运算的逻辑,对编译器的要求?就是一个赋值先后问题。同时表示个人对编译器的了解不深,不吝赐教,谢谢!
1 楼 低下头是人间 2013-10-13  
第三种和第四种都面临着超出Integer最大值的问题
第二种应该算是标准写法了

第一种看起来的确很妙。但是是否会依赖于编译器的实现?(无责任乱喷)

相关推荐

    C#不借助第三个变量实现两整数交换

    c#中实现两个int变量的数值互换,在借助第三个变量做临时载体的情况下,非常简单。  int a = 10;  int b = 5;  int c ;  c = a;  a = b;  b = c;  如果不借助第三方变量,有几种实现的方法:  1....

    c程序设计习题参考(谭浩强三版)习题参考解答

    第3章 数据类型、运算符与表达式 2 3.3请将下面各数用八进制和十六进制数表示: 2 3.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。 2 3.5字符常量和字符串常量有什么区别? 3 ...

    你必须知道的495个C语言问题

    *4.15 我怎样把一个int变量转换为char*型?我试了类型转换,但是不行。 第5章 空指针 空指针和空指针常量 5.1 臭名昭著的空指针到底是什么? 5.2 怎样在程序里获得一个空指针? 5.3 用缩写的指针比较“if...

    C语言FAQ 常见问题列表

    o 4.12 我需要根据条件把一个复杂的表达式赋值给两个变量中的一个。可以用下边这样的代码吗? ((condition) ? a : b) = complicated_expression; * 5. 指针 o 5.1 我想声明一个指针并为它分配一些空间, 但却...

    《你必须知道的495个C语言问题》

    *4.15 我怎样把一个int变量转换为char *型?我试了类型转换,但是不行。 52 第5章 空指针 53 空指针和空指针常量 53 5.1 臭名昭著的空指针到底是什么? 53 5.2 怎样在程序里获得一个空指针? 54 5.3 用...

    C# for CSDN 乱七八糟的看不懂

    对数 数字 x 的 y 次幂 返回较大者 第3页 C#(WINFORM)学习 Math.Min(x,y) 返回较小者 枚举型 一般为字符串,可以定义带数字的枚举型,示例为: enum Color { Red=1, Blue=2, Green=3 } class Shape { public int ...

    汇编语言程序设计.林邦杰.陈明

    第3章 NASM汇编语言基础 3-1 源程序行格式 3-2 伪指令 3-2-1 定义含有初值的数据 3-2-2 定义不含初值的数据 3-2-3 INCBIN伪指令 3-2-4 EQU伪指令 3-2-5 TIMES伪指令 3-3 有效地址 3-4 常量 3-4-1 数字常量 3-4-2 ...

    你必须知道的495个C语言问题(PDF)

    3.12 我需要根据条件把一个复杂的表达式赋值给两个变量中的一 个。可以用下边这样的代码吗? ((condition) ? a : b) = complicated expression; . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 目录iii ...

    C语言入门经典(第4版)--源代码及课后练习答案

    第3章 条件判断 79 3.1 判断过程 79 3.1.1 算术比较 80 3.1.2 涉及关系运算符的表达式 80 3.1.3 基本的if语句 81 3.1.4 扩展if语句:if-else 84 3.1.5 在if语句中使用代码块 86 3.1.6 嵌套的if语句 87 3.1.7...

Global site tag (gtag.js) - Google Analytics