#include <stdio.h>
#include <time.h>
// 使用中间变量
time_t fun1()
{
time_t t1 = time(0);
int a = 1, b = 2;
for (int i = 0; i < 1000000000 ; ++i)
{
int c = a;
a = b;
b = c;
}
return time(0) - t1;
}
// 使用异或 原理:交换律 ( a ^ b) ^ b = a ^ (b ^ b) = a ^ 0 = a
time_t fun2()
{
time_t t1 = time(0);
int a = 1, b = 2;
for (int i = 0; i < 1000000000 ; ++i)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
return time(0) - t1;
}
int main(int argc, char **argv)
{
printf("fun1 use time %u\n",fun1());
printf("fun2 use time %u\n",fun2());
printf("press any key to exit...\n");
getchar();
return 0;
}
目测效率还是中间变量方式更高一些。
但是Why?