Consider the C code a = a = a. There\'s no sequence point for assignment, so this code produces a warning when compiling about an undefined operation on a
It is actually the entire program that has "undefined behaviour" after it executes that statement. It's not just about the value of a - the program can do anything, including go into an endless loop, print garbage output or crash.
"Undefined behaviour" really just means that the C standard no longer places any limits on what the program does. That doesn't stop you reasoning about how a particular compiler might behave when it sees that code, but it's still not a valid C program, and that's what the compiler is warning you about.