gpt4 book ai didi

c - 为什么这个程序有不同的结果,temp=*a 和 *a= temp 不是同一件事吗?

转载 作者:行者123 更新时间:2023-11-30 21:49:19 26 4
gpt4 key购买 nike

我正在学习 C 的 udemy 类(class),发现这个问题不是都声明是相同的吗?如果是,为什么答案不同

源代码:

#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 %d\n",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: %d\n", x, y);
x=y;
printf("After assignment: x: %d y: %d\n", 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

关于c - 为什么这个程序有不同的结果,temp=*a 和 *a= temp 不是同一件事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51206969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com