加法交换变量有问题

来源:互联网 发布:公众号 大数据 编辑:程序博客网 时间:2024/04/30 10:31

声明: 仅个人小记

前言: 让你们嚣张,好好的交换非要弄什么加法来实现交换。今天帮同学查到了一个bug,罪魁祸首就是“加法实现交换”这种方法。哈哈,我找到这个方法的弊端了,我必须得记一下。

一、加法交换

#include <stdio.h>void f(int * a, int * b) {    *a = *a + *b;    *b = *a - *b;    *a = *a - *b;       }int main(void){    int a = 10;    int b = 19;    // 当交换对象为不同的两个对象时是OK的    f(&a,&b); // ok  结果 a = 19     // 当交换对象为同一体时,加法交换弊端显露    f(&a,&a); //wrong   结果 a = 0    printf("a = %d  b = %d\n",a,b);    return 0;}

2017年9月20日 14:21:10 By Jack Lu

原创粉丝点击