作业帮 > 综合 > 作业

不用中间变量交换a和b的值,有哪些方法?

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/28 04:24:41
不用中间变量交换a和b的值,有哪些方法?
a=b^a;b=a^b;a=b^a;用异或这种方法肯定没错,
我想问的是 b= (a=b)*0 + a ; 这种方法可以吗?
不用中间变量交换a和b的值,有哪些方法?
不行.首先 a=b,将b赋值给a,此时a的值已经变为b的值,(a=b)*0为0,再加上a(此时a的值已经是b了),所以此语句的结果什么都没做.比如a = 5,b=4.最后结果是4.
一种方法是 a = a+b; b=a-b; a=a-b;此时a,b值互换.
再问: 那个加法我也知道,但是可能要考虑溢出的问题。 b= (a=b)*0 + a ;这个算式程序中不是应该从右往左吗? 相当于 a + “零”的值赋给b。“零”这个相当于处理b赋值给a,然后外面就是a赋值给b,这个逻辑能行得通吗? 因为b= a + (a=b)*0;这个和前一个按照从右往左计算 结果就不一样
再答: 表达式的运算过程和数学中的规则一样,有括号先做括号内的子表达式。有多层括号,先运算最里层。同一层,负号优先运算,再接下来运算乘除,再加减;同一优先级从左到右进行运算。。从右向左运算的是赋值号吧。。 int main() { int a=5,b=4; cout