变量交换的三种方式

#include <stdio.h>
#include <math.h>
int main(void)
{
	int a, b, t;

	scanf("%d%d", &a, &b);
	/*
	方法一:三变量法
	t = a;
	a = b;
	b = t;
	方法二:
	a = a - b;
	b = a + b;
	a = b - a;
	方法二变种:
	a = a + b;
	b = a - b;
	a = a - b;
	*/
	//方法三:异或运算,原因是对于整形变量a,有a^a=0
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;

	printf("%d %d\n", a, b);

    return 0;
}
时间: 2024-10-23 21:21:46

变量交换的三种方式的相关文章

两个数交换的三种方式

记得刚开始学C++的时候,也做过两个数的交换,当时只用过下面的第一种和第三种方法,今天在看传智播客Java视频教程的时候,学到了另两种方式 假设a=10,b=20,交换a,b的值 方法一,使用第三方的变量,也是最常用的方法 int c=a; a=b; b=a; 方法二,位异或运算 a=a^b; b=a^b; //a^b^b=a a=a^b; //a^b^a=b 方法三,变量相加 a=a+b; b=a-b; a=a-b; 方法四,一句话搞定 b=(a+b)-(a=b); 在实际的工作中常用的还是第

go中变量使用的三种方式

// 变量的使用 package main import "fmt" // 定义多个全局变量 var ( globalName = "Jackie" globalAge = 56 globalSex = "male" ) func main() { // 指定变量类型,声明后若不赋值,使用默认值 // int的默认值是0 var i int fmt.Println("i =", i) // i = 0 // 根据值自行判定变量

Oracle变量定义的三种方式(define,variable,declare)学习笔记

1.define(即host变量) Host变量主要作用是起到一个替代变量的作用,是主机环境可以和oracle进行交互的一个媒介. 通过define定义host变量的时候必须指定变量名和变量的值,如果变量名已经存在于host变量中,则自动覆盖,这个值不可以指定类型,一律按char存储. DEFINE 变量只在当前session环境中有效. (1).语法: define variable_name = value (2).声明和初始化DEFINE变量 //声明define变量的时候必须同时初始化赋

CentOS添加环境变量的三种方式

CentOS添加环境变量的三种方式,以添加php环境变量为例,假定php的安装目录为 /usr/local/php5 一.仅对当前会话临时生效 [[email protected] ~]# export PATH=$PATH:/usr/local/php5/bin 二.仅对当前用户永久生效 编辑 ~/.bash_profile文件,在PATH=$PATH:$HOME/bin行后添加 :/usr/local/php5/bin [[email protected] ~]# vi ~/.bash_pr

Linux 下三种方式设置环境变量

1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错误. 2.那么什么是环境变量?简单说,就是指定一个目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件. 设置变量对于一般人最实用的功能就是: 不用拷贝某些dll文件到系统目录中了,而path 这一系统变量就是系统搜索dll文件的一系列路径 在Linux系统下,如果你下载并安装应用程序,很有可能在键入它的名称的时候出现

【Struts2】Struts2获取session的三种方式

1.Map<String,Object> map =  ActionContext.getContext().getSession(); 2.HttpSession session = ServletActionContext.getRequest().getSession(); 3.让Action实现SessionAware接口,并实现public void setSession(Map<String, Object> session) {} 方法,Struts2会在实例化Act

java创建线程的三种方式及其对比

Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实例,即创建了线程对象. (3)调用线程对象的start()方法来启动该线程. package com.thread; public class FirstThreadTest extends Thread{ int i = 0; //重写run方法,run方法的方

Spring的依赖注入(DI)三种方式

Spring依赖注入(DI)的三种方式,分别为: 1.  接口注入 2.  Setter方法注入 3.  构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个类: 接口 Logic.java 接口实现类 LogicImpl.java 一个处理类 LoginAction.java 还有一个测试类 TestMain.java Logic.java如下: package com.spring.test.di; public interface Logic {

javascript函数命名的三种方式及区别

1, function fn(val1,val2) { alert(val1+val2); } fn(1,2); 2, var fn=function() { alert(val1+val2); } fn(1,2); 3, var fn=new Function("alert(val1+val2)"); fn(1,2); 上面三种方式逻辑上是等价的,但是还是有点小区别: 区别一:例一中的函数会在代码执行以前被加载到作用域中,而例二则是在代码执行到那一行的时候才会有定义: 区别二:函数声