【发布时间】:2012-02-25 16:39:35
【问题描述】:
在Cprogramming.com我找到了这段代码:
int a,b;
scanf("%d %d",&a,&b);
b=(a+b)-(a=b);
printf("%d %d",a,b);
据称是“不使用临时交换”的提示/技巧。我在 Linux gcc 上的测试证明了这一点。但是,在这里计算这个表达式的不同编译器或平台的顺序不重要吗?使用这样的代码安全吗?
【问题讨论】:
-
是的,因为使用临时变量是一件非常糟糕的事情!!!
-
最近关于 "trick" 的讨论,扩展了 @DavidHeffernan 提到的内容。