在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量。如果在没有临时变量的情况下,该如何做呢?
方法一:C语言提供的异或运算就可以实现这样的操作。异或运算符“^”也称“XOR”运算符,它的规则是:若参加运算的两个二进位同号,则结果为0(假);异号为1(真)。
即: 0 ^ 0 = 0,
0 ^ 1 = 1,
1 ^ 0 = 1,
1 ^ 1 = 0。
例如:a=5, b=9, 要想交换a和b的值,我们可以这样做:
a = a ^ b;
b = b ^ a = b ^ a ^ b = a (此时已经将a的值赋给了b)
a = a ^ b = a ^ b ^ a = b (将b的值赋给了a,交换完成)
C语言代码如下:
# include <stdio.h> int main() { int a, b; scanf("%d %d", &a, &b); a = a ^ b; b = b ^ a; a = a ^ b; printf("交换后的值为:"); printf("%d %d\n", a, b); return 0; }
方法二:第二种方法是加减法,其实原理和第一种方法如出一辙。
即:a = a + b;
b = a - b = a + b - b = a; (将a赋值给了b)
a = a - b = a + b - a = b; (将b赋值给了a)
C语言代码如下:
# include <stdio.h> int main() { int a, b; scanf("%d %d", &a, &b); a = a + b; b = a - b; a = a - b; printf("交换后的值为:"); printf("%d %d\n", a, b); return 0; }
干货小知识: sizeof 在 计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。
本文出自 “无名小卒” 博客,请务必保留此出处http://814193594.blog.51cto.com/10729329/1697516
原文地址:http://814193594.blog.51cto.com/10729329/1697516