In the Android open-source qemu code I ran across this line of code:
machine->max_cpus = machine->max_cpus ?: 1; /* Default to UP */
The K&R BNF shows an expression is required between "?" and ":". I don't think gcc should be compiling that without a diagnostic.