005-logical.c (544B)
1 /* tests/cc-e2e/05-logical.c — &&, ||, short-circuit evaluation. 2 * Split from 01-kitchen-sink. */ 3 4 int test_logical(void) { 5 int r = 0; 6 if (1 && 1) r = r + 1; 7 if (0 && 1) r = r + 100; 8 if (1 || 0) r = r + 2; 9 if (0 || 0) r = r + 100; 10 int side = 0; 11 if (1 || (side = 100)) r = r + 4; /* short-circuit; side stays 0 */ 12 if (0 && (side = 100)) r = r + 100; 13 return r + side; /* 1+2+4+0 = 7 */ 14 } 15 16 int main(int argc, char **argv) { 17 if (test_logical() != 7) return 1; 18 return 0; 19 }