码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-09-23 17:10:42      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:c语言、交换两个变量的值、不允许使用临时变量

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

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

标签:c语言、交换两个变量的值、不允许使用临时变量

原文地址:http://814193594.blog.51cto.com/10729329/1697516

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!