在我们平常的变量值交换方法中,我们一般都是采用中间变量的方法来实现变量值在两个变量之间互换。但是对于整型变量,我们可以用其他更多的方法来实现变量值互换,比如整型变量a,b在不利用中间变量的情况下,我们可以用:a=a+b; b=a-b; a=a-b;来实现变量值互换。在这里我们介绍一种更加快速的无中间变量的交换方法,...
vara=1;varb=2;a=a+b b=a-b a=a-b 我们可以看见,a = a + b这句就让a同时把两个变量的信息都存到a上面去了;第二句b = a - b,因为a是a、b两者原本值和,而b交换后结果是a原本的值,那么交换后的b,就是两者原本的值的和减去原本的b。最后一句,既然知道了b,那么a也可以知道了,减一下 举一...
该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失,例如对数据: a = 3.123456 b = 1234567.000000 交换后各变量值变为: a = 1234567.000000 b = 3.125000 很明显,原来a的值在交换给b的过程中发生了精度损失。 (2)乘除法。 a = a * b; b = a / b; a = a / b; 乘...
1. 按位异或运算符“^”是双目运算符,其功能是参与运算的两数各对应的二进制位相异或,当对应的二进制位相异时,结果为1。参与运算数仍以补码形式出现。 如a = 5 , b = 9,进行转换。 例如9 ^ 5可写成算式如下: 0000 1001 ^ 0000 0101 = 0000 1100 (十进制数为12) #include<stdio.h>intmain(){int...
有两种方式可以不使用中间变量,交换同类型的变量a,b的值:1 .使用加法操作a+=b; b=a-b;a -= b;2 .使用异或操作:a^=b;b^=a;a^=b;C语言运算符是说明特定操作的符号, 它是构造C语言表达式的工具。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为运算符处理。除...
交换两个数的位置,不用中间变量 a ^= b;b ^= a;a ^= b;1最常用的:public static void main(String[] args) {int a = 5;int b = 4;a = a^b;b = b^a;a = a^b;System.out.print(a + ":" + b);}这个是最快的其次不是很好但是可行的public static void main(String[] args) {...
前面我们谈到了,可用通过异或运算交换两个数,而不需要任何的中间变量。 如下面: void exchange(int &a, int &b) { a ^= b; b ^= a; a ^= b; } 然而,这里面却存在着一个非常隐蔽的陷阱。 通常我们在对数组进行操作的时候,会交换数组中的两个元素,如exchang(&a[i], &b[j]), 这儿如果i==j了...
// 两种值交换的方式,用中间变量空间复杂度高于不用中间变量,但时间复杂度要低于不用中间变量. // 常规写两个值的交换 int a = 100; int b = 200; System.out.println("初始值 a=100 b=200"); // 中间变量 int c; // 复制给中间变量,临时存 ...