据称“巧妙”(但实际上效率低下)交换两个整数变量而不是使用临时存储的方式通常涉及这一行: int a = 10; int b = 42; a ^= b ^= a ^= b; /*Here*/ printf(“a=%d, b=%d\n”, a, b); 但我想知道,复合赋值运算符如^=不是序列点,是吗? 这是否意味着它实际上是未定义的行为?