谁能详细解释一下这个数字是如何一步一步交换的(逗号运算符)

Can anyone pls explain me in detail how this number got swaped step by step (comma operator)

#include<stdio.h>
int main(void)
{
int a=8,b=7,temp;
printf(“a=%d, b=%d\n”,a,b);
temp=a,a=b,b=temp;
printf(“a=%d, b=%d\n”,a,b);
return 0;
}

任何人都可以详细解释一下这个数字是如何逐步交换的(逗号运算符)

在行 int a = 8, b = 7, temp; 中,您在堆栈内存中分配了三个变量(每个 4 字节),并为 'a' 和 'b' 变量赋值。 打印值后,行 temp = a, a = b, b = temp; 将变量 'a' 的值赋给变量 'temp',然后将变量 'b' 的值赋给名为 'a'(现在 a = 7 和 temp = 8),然后 b = temp 使用临时变量使名为 'b' 的变量具有名为 'a' 的变量的原始值。

变量'a'和'b'的值打印在每个printf行中,赋值的逗号分隔符与分号分隔符在这种情况下具有相同的操作。

关于逗号运算符的详细信息:

  • 首先,计算最左边的操作数 temp=a,并丢弃其结果值。
  • 然后,一个序列点发生,这样temp=a的所有副作用就完成了。
  • 然后,计算下一个操作数 a=b,并丢弃其结果值。
  • 然后,一个序列点发生,这样a=b的所有副作用就完成了。
  • 最后对 b=temp 求值,其结果由完整表达式返回。

也就是说,在int x = (temp=a,a=b,b=temp);中,x等于b