a,b是整型变量,各自有互不相同的初始值。下列程序实现了什么效果( )。 a=a^b; b=a^b; a=a^b;
A:a,b 的值从始至终都没有改变。
B:a,b 的值实现了互换。
C:a,b 的值互换了以后,又还回去了,相当于没有变化。
D:a,b 的值最后和原值不一样,没有任何意义。
正确答案:B
答案解析
使用异或运算的特性:任何数与自身异或结果为0,任何数与0异或结果为自身。第一步将a更新为a与b的异或值;第二步将b更新为当前a(即原a与原b异或)再与当前b(即原b)异或,结果为原a;第三步将a更新为当前a(即原a与原b异或)再与当前b(即已更新为原a的值)异或,结果为原b。整个过程利用异或运算的可逆性完成两个变量值的交换,无需额外临时变量。
试卷来源:202603 CCF-GESP编程能力等级认证C++三级真题