为什么这个程序有不同的结果不是 temp=*a 和 *a= temp 是一回事?

  • 本文关键字:temp 一回事 结果 程序 c
  • 更新时间 :
  • 英文 :


我正在学习 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

相关内容

  • 没有找到相关文章

最新更新