我正面临着理解#define如何工作的问题.
#include<stdio.h>
#define x 6+3
int main(){
int i;
i=x; //9
printf("%d\n",i);
i=x*x; //27
printf("%d\n",i);
i=x*x*x; //45
printf("%d\n",i);
i=x*x*x*x; //63
printf("%d\n",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用#define x 6+3输出是9 27 45 63
如果我使用#define x (6+3)的输出是9 81 729 6561
我想用一个函数交换两个变量。我创建了两个函数my_swap_f1和my_swap_f2;my_swap_f2工作正常,但my_swap_f1抛出 2 个错误(在下面注释掉)。
#include<iostream>
using namespace std;
int my_swap_f1(int &a,int &b){
int *temp;
temp=&a;
//&a=&b; //throw error
//&b=temp; //throw error
}
int my_swap_f2(int *a,int *b){
//works perfectly
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int main(){
int a=10;
int b=20;
int temp=0;
cout<<"Before Swap"<<endl;
cout<<a<<endl;
cout<<b<<endl;
my_swap_f1(a,b); //send value as perameter
//my_swap_f2(&a,&b); //send address as perameter
cout<<"After Swap"<<endl;
cout<<a<<endl;
cout<<b<<endl;
}
Run Code Online (Sandbox Code Playgroud)
问题:为什么会抛出错误my_swap_f1,如果我想交换怎么办my_swap_f1?