`
niunan
  • 浏览: 721516 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

两个整形变量,不用中间变量进行替换!

 
阅读更多
刚刚在看评论的时候发现的,好像觉得有点用吧,先记下来了~

两个整型变量,不用中间变量进行替换。

嚴格的講,這個題目是無解的。
有很多人會有這樣的答案:
int a = ?;
int b = ?;

a=a+b;
b=a-b;
a=a-b;

貌似這樣的代碼沒有什么問題,結果也正確,但如果a+b>Int.MaxValue呢?這一行就會溢出。


嚴格的講,如果不使用第三個變量,是沒辦法完成這個題目的。如果你使用if,則違反了命題,if實際上也使用了第三個變量。

还有些针对上面的评论:
第一种方法:
a^=b;
b^=a;
a^=b;

第二种方法:
b=a+(a=b)*0;

第一种方法我还不知道是什么意思,位运算的不太懂
第二种方法倒是蛮有趣的。呵呵。。又学到一点东西。。。
分享到:
评论

相关推荐

    c语言 整形变量相除的精度问题.zip

    当你对两个整型变量进行除法运算时,可能会遇到精度问题。这是因为C语言中的整数除法遵循特定的规则和行为,这些规则可能会导致结果与预期不符,尤其是在涉及到浮点数计算时。以下是对“c语言整形变量相除”的详细...

    20240703作业1

    - **&&**(逻辑与): 当且仅当两个操作数都为真时,结果才为真;若任一操作数为假,则结果为假。 - **||**(逻辑或): 只要有一个操作数为真,结果就为真;只有当所有操作数均为假时,结果才为假。 - **!**(逻辑非...

    VBScript 语言参考

    Is 运算符 比较两个对象引用变量。 IsArray 函数 返回 Boolean 值,表示变量是否为数组。 IsDate 函数 返回 Boolean 值,表示表达式是否可以转换为日期。 IsEmpty 函数 返回 Boolean 值,表示变量是否已被初始化...

    VBSCRIP5 -ASP用法详解

    Is 运算符 比较两个对象引用变量。 IsArray 函数 返回 Boolean 值,表示变量是否为数组。 IsDate 函数 返回 Boolean 值,表示表达式是否可以转换为日期。 IsEmpty 函数 返回 Boolean 值,表示变量是否已被初始化...

    VBSCRIPT中文手册

    Is 运算符 比较两个对象引用变量。 IsArray 函数 返回 Boolean 值,表示变量是否为数组。 IsDate 函数 返回 Boolean 值,表示表达式是否可以转换为日期。 IsEmpty 函数 返回 Boolean 值,表示变量是否已被初始化...

    vb Script参考文档

    Is 运算符 比较两个对象引用变量。 IsArray 函数 返回 Boolean 值,表示变量是否为数组。 IsDate 函数 返回 Boolean 值,表示表达式是否可以转换为日期。 IsEmpty 函数 返回 Boolean 值,表示变量是否已被初始化...

    VBScript 语言参考中文手册CHM

    Is 运算符 比较两个对象引用变量。 IsArray 函数 返回 Boolean 值,表示变量是否为数组。 IsDate 函数 返回 Boolean 值,表示表达式是否可以转换为日期。 IsEmpty 函数 返回 Boolean 值,表示变量是否已被初始化...

    c++答案郑阿奇主编

    - **使用第三个变量**:通过引入一个临时变量来存储其中一个变量的值,然后交换两个变量的值。 - **不使用第三个变量**:可以通过异或运算或者加减法运算来实现变量值的交换。 ### 枚举类型和布尔类型的定义 - **...

    c语言复习题库

    3. **符号与字符的区别**:`"a"`代表一个包含两个字符的字符串,即`a`和字符串结束符`\0`,而`'a'`代表一个单独的字符`a`。 ### 指针与地址运算 1. **指针概念**:"指针"是一种特殊类型的变量,它存储另一个变量的...

    hdb3编码的C语言编码

    在该程序中,我们定义了两个宏定义:`length`和`len`。其中,`length`定义了消息码的长度,即20个比特位,而`len`定义了标记数组`label`的长度,即10个元素。这些宏定义可以根据实际情况进行修改,但需要同时修改...

    PHP数据类型.rar

    布尔型(boolean)只有两个值,即TRUE和FALSE。它们常用于条件判断和逻辑运算,如if语句和逻辑运算符。"数据类型_布尔型.php"将解释如何声明和使用布尔值,以及它们在控制流程中的作用。 数组(array)是PHP的特色...

    (完整版)C语言期末考试试题(谭浩强版).doc

    11. 由n个指向整形数据的指针组成的数组`p`的正确定义方式是`int *p[n];`。 12. 指针类型变量`p`与数组`a`的操作中,`p=a;`、`*p=a[0];`和`p=&a[0];`都是合法的,但`p=&a;`是非法的,因为`p`应该指向数组的第一个...

    数字电子技术复习知识点汇总.doc

    - **施密特触发器**:能够将输入波形整形为标准的矩形脉冲,具有滞回特性,即有两个不同的阈值电压来确定输出状态的翻转。 - **多谐振荡器**:无需外部信号触发,可以自动产生稳定的矩形脉冲输出。该电路没有稳态,...

    2012年3月全国计算机等级考试二级C语言上机考试题库及答案 已缩印(最新版来自机房题库).pdf

    - **数值处理**:将两个两位数合并成一个整数,涉及到位运算,如将十位和个位进行移位操作。 - **奇偶位提取**:从长整形变量中提取奇数位或偶数位,构建新的数,这涉及到位操作和条件判断。 6. **函数调用**: ...

    BOS V6.2开发指南_kscript

    - **特性**: KSCRIPT有两个显著特性:一是不需要进行类型转换;二是不能访问内部类,这意味着在编写脚本时,不能直接使用定义在类内部的私有方法或成员。 ### KSCRIPT 执行 - **解释器的构造**:首先需要构造一个...

    数字逻辑与数字系统,王永军,第三版,ppt

    它处理的是二值逻辑,即变量只有0和1两种状态。 - 逻辑函数是基于逻辑变量的运算,表示为Y = F(A, B, C, ...),其中Y是输出,A, B, C等是输入。 - 逻辑运算包括: - **与运算**(逻辑乘):如果所有输入都是1,...

    数字电子技术基础试题选择参照.pdf

    实现两个一位二进制数相加的电路叫全加器,全加器还需要考虑进位。 6. 错误的描述是a. 触发器具有两种状态,Q=1时触发器处于1态,触发器的状态取决于Q和非Q的组合。 7. 触发器当前状态为"011",在下降沿Jk触发器...

    Python经典面试题

    #### 15:有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小 可以使用贪心策略来解决这个问题,即排序后交换较大的数到较小的...

    C程序设计复习资料.pdf

    - 示例题目:用条件运算符写出求两个数a,b大者的表达式`max = a > b ? a : b`。 ### 4. 逻辑运算符 - **逻辑与运算**:`&&`表示逻辑与运算,两边的表达式都为真时结果为真。 - 示例题目:表达式`98 && 8 && 31 & 1...

    2021-2022计算机二级等级考试试题及答案No.2253.docx

    19. 空值(NULL)表示没有值,不同于0、空字符串或其他任何值,且任意两个空值被认为是相等的。 20. 使用`final`关键字修饰的类不能被继承,是最终类。 21. C语言的执行起点是`main()`函数。 22. 在数据库中,...

Global site tag (gtag.js) - Google Analytics