数据类型范围 1:编程实现由键盘输入两个整数,将其赋给变量x和y并输出,交换x和y的值后再输出,用函数输出?
1:编程实现由键盘输入两个整数,将其赋给变量x和y并输出,交换x和y的值后再输出,用函数输出?
可以使用以下三种方法:1。方法1:[中间变量]通过设置一个变量来交换两个值。这个方法最直接,也最容易理解(为了代码可读性,建议使用这个方法),但是有一个临时变量。如果不想创建临时变量,可以使用以下方法。2方法二:通过加减法实现价值交换。具体代码如下:3。方法3:[异或运算]。关于XOR有几个属性:1。任何变量x和它本身的异或结果是0,即x^x=0。2任何变量x和0的异或结果不变,即x^0=x.3。异或运算可以组合,即a^B^C=(a^B)^C=a^(B^C)。4异或运算是可交换的,即a^B=B^a。实现过程如下:第一步是a=a^B,变量的结果是a^B。第二步是B=a^B的右边等号是(a^B)^B=a^(B^B)=a^0=a。经过计算,B中的值是a。第三步是a=a^B。此时,赋值号右侧a的值仍然是a^B,赋值号右侧B的值是原始a,即a^B=(a^B)^a=a^B^a=(a^a)^B=0^B=B在等号右侧。此值分配给a,即a=B。代码如下:
如何不使用第三个变量来交换两个数的值?
算术运算;指针地址运算;位运算;堆栈实现。具体操作如下:其原理是:以A、B为轴上的点数,围绕两点之间的距离来计算。具体流程:第一句“a=B-a”计算AB两点之间的距离,保存在a中;第二句“B=B-a”计算a到原点的距离(B到原点的距离与AB的距离之差),保存在B中;第三句话“a=ba”计算从B到原点的距离(从a到原点的距离和从ab到原点的距离之和),并将其保存在a中。完成交换。与标准算法相比,该算法增加了三个计算过程,但不需要临时变量的帮助。(以下简称算术算法)缺点:只能用于数字型,不能用于字符串型。A和B可能溢出(超出int的范围)。溢出是相对的。如果溢出来了,回来就好了。所以不溢出也没关系,就是不安全。因为地址的运算实际上是一个整数运算,例如:将两个地址相减得到一个整数,表示内存中两个变量的存储位置之间分隔了多少字节;地址和整数相加,即“a 10”表示最后10个a型数据单元的地址a作为基址。因此,在理论上,我们可以通过类似于算术算法的运算来完成地址交换,从而达到交换变量的目的。该算法的实现取决于异或运算的特点。通过异或操作,数据中的某些位可以翻转,而其他位保持不变。这意味着任何数字和任何给定值都是XOR的两倍,并且该值保持不变。上述算法都实现了两个变量值的交换,而不需要其他变量的帮助。相对而言,算术算法和位算法的计算量是相同的。地址算法中的计算比较复杂,但很容易实现大类型(如自定义类或结构)的交换。而前两者只能进行整形数据的交换(理论上,重载“^”运算符,也可以实现),现在需要进行任意结构的交换。
异或有什么用?
异或用于二进制数的运算,可以反转每个二进制位
数据类型范围 异或交换两个变量有什么陷阱 c语言数据类型范围
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。