我正在学习 C 的 udemy 课程,发现这个问题不是两者都声明是相同的吗?如果是,为什么答案不同
源代码:
#include <stdio.h>
void swap(int *a, int *b){
int temp;
temp =*a; // This works
//*a = temp; // This does not work?
*a = *b;
*b=temp;
}
int main()
{
int x=100, y=400;
printf("before swapping x is %d and y is %dn",x,y);
swap(&x,&y);
printf("after swapping x is %d and y is %d",x,y);
return 0;
}
为什么我从temp=*a
得到的结果与*a=temp
不同?
不,这不是一回事。运算符=
修改左操作数,使其获得与右操作数相同的值。它被称为分配。
这个片段可以说明它:
int x=3, y=5;
printf("Before assignment: x: %d y: %dn", x, y);
x=y;
printf("After assignment: x: %d y: %dn", x, y);
它将打印以下内容:
Before assignment: x: 3 y: 5
After assignment: x: 5 y: 5
如果将x=y
切换到y=x
则会得到:
Before assignment: x: 3 y: 5
After assignment: x: 3 y: 3