而#define是宏定義,只用來做簡單的替換
所以過程替換後就應該變成
#include<stdio.h>
main( )
{
int a=3,b=5,c=7;
a=a∧b;
b=a∧b;
a=a∧b;
b=b∧c;
c=b∧c;
b=b∧c;
a=a∧c;
c=a∧c;
a=a∧c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
以JH(a,b)舉例 它就等於 a=a∧b;b=a∧b;a=a∧b;
a=3=0011
b=5=0101
a=a∧b=0110=6
b=0110∧0101=0011=3
a=0110∧0011=0101=5
所以這裏的宏定義實現的實際上就是x、y兩數的對調
因為假設x的某壹位上是1,y的該位是0 x=x∧y在該位就是1
y=x∧y在該位上就為1 x=x∧y在該位得0
假設x的某壹位上是0,y的該位是0 x=x∧y在該位就是0
y=x∧y在該位上就為0 x=x∧y在該位得0
假設x的某壹位上是1,y的該位是1 x=x∧y在該位就是0
y=x∧y在該位上就為1 x=x∧y在該位得1
假設x的某壹位上是0,y的該位是1 x=x∧y在該位就是1
y=x∧y在該位上就為0 x=x∧y在該位得1
所以最後的運行結果就是a與b對換,然後b與c對換,最後a與c對換
運行結果應為3 7 5