C 为什么在这个程序中有不同的结果,temp=*a和*a=temp不是一样的东西?

C 为什么在这个程序中有不同的结果,temp=*a和*a=temp不是一样的东西?,c,C,我正在学习我的C课程,发现这个问题不是都是一样的吗??如果是,为什么答案不同 源代码: #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;

我正在学习我的C课程,发现这个问题不是都是一样的吗??如果是,为什么答案不同

源代码:

#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

每次代码的图片被张贴或链接到这个网站上,一只小猫就死了。有问题的示例代码应逐字复制、粘贴和格式化,以支持您关于上述问题的提问。@HrithikAgrawal,请阅读关于如何发布问题的帮助文本,此处。没有理由不在你的问题中直接发布源代码。以文本形式发布代码也是免费的,没有附加内容。@Bathsheba Mine想要一只Ocicat,但我一直在避免告诉她由于图片代码帖子而每天都会发生的物种屠杀。从你的词汇表中删除equals这个词。现在,您在代码中看到的任何single=都应该发音为的值。现在,用这种语言阅读交换函数并对自己说。