We haven't specified that, so the behavour will be defined by the implementations.
That's typically labelled as implementation defined. Which is not the same as undefined behaviour.
| [reply] |
| [reply] |
Specification of language X says:
- The behaviour of ~0 is implementation defined, but may not be positive.
- The behaviour of 0^0 is undefined.
Implementation S specifies that ~0 equals -1.
Implementation T specifies that ~0 equals 1. Neither defines what 0^0 means. Program P contains ~0. Program R contains 0^0. Running P on S produces -1. Running R on S locks up the OS requiring a reboot. S is confirming. Running P on T produces 1. Running R on T produces an error message. T is not confirming.
Implementation defined means that the feature is a valid feature, and it's up to each implementation to define what it means. Undefined behaviour basically means the feature is not valid, and implementations do not define what happens.
But let me guess, you're still going to claim to not understand the difference, right?
| [reply] |