1 1.2 rillig /* $NetBSD: expr_precedence.c,v 1.2 2021/07/15 17:20:58 rillig Exp $ */ 2 1.1 rillig # 3 "expr_precedence.c" 3 1.1 rillig 4 1.1 rillig /* 5 1.1 rillig * Tests for the precedence among operators. 6 1.1 rillig */ 7 1.1 rillig 8 1.1 rillig int var; 9 1.1 rillig 10 1.1 rillig /* 11 1.1 rillig * An initializer needs an assignment-expression; the comma must be 12 1.1 rillig * interpreted as a separator, not an operator. 13 1.1 rillig */ 14 1.1 rillig /* expect+1: error: syntax error '4' [249] */ 15 1.1 rillig int init_error = 3, 4; 16 1.1 rillig 17 1.1 rillig /* expect+1: error: non-constant initializer [177] */ 18 1.1 rillig int init_syntactically_ok = var = 1 ? 2 : 3; 19 1.1 rillig 20 1.1 rillig /* 21 1.1 rillig * The arguments of __attribute__ must be constant-expression, as assignments 22 1.1 rillig * don't make sense at that point. 23 1.1 rillig */ 24 1.1 rillig void __attribute__((format(printf, 25 1.1 rillig /* expect+2: error: 'var' undefined [99] */ /* XXX: why? */ 26 1.2 rillig /* expect+1: syntax error '=' [249] */ 27 1.1 rillig var = 1, 28 1.1 rillig /* Syntactically ok, must be a constant expression though. */ 29 1.1 rillig var > 0 ? 2 : 1))) 30 1.1 rillig my_printf(const char *, ...); 31