// Compile: cc -std=c23 test_annex_C_sequence.c
#include <assert.h>
int main(void){
  int i = 1, j = 2;
  // well-defined: left operand of && is sequenced before right when it evaluates false
  int a = 0 && (i = 5); // right not evaluated
  assert(i == 1 && a == 0);
  // comma operator sequences left then right
  int k = (j++, j + 1);
  assert(j == 3 && k == 4);
  // ?: only one of second/third operands evaluated
  int x = 0 ? (i = 7) : (i = 9);
  assert(i == 9 && x == 9);
  return 0;
}
