首页 > 其他 > 详细

不允许创建临时变量交换两个变量的内容

时间:2015-09-23 17:07:40      阅读:277      评论:0      收藏:0      [点我收藏+]

       在学习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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!