Tag: 复合赋值

表达式中有序列点a ^ = b ^ = a ^ = b,还是未定义?

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