Undefined behaviour
Undefined behaviour
Posted Sep 4, 2018 20:38 UTC (Tue) by farnz (subscriber, #17727)In reply to: Undefined behaviour by rweikusat2
Parent article: C considered dangerous
"Nasal demon" is just a short-cut to saying that "the behaviour of a program is not defined by the standards you are relying upon to define the progam's meaning, and thus anything could go". This isn't just the ISO C standard, but also POSIX, and even implementation defined standards; in the cases you're talking about, "nasal demons" is a distraction, as there are standards that define the behaviour in question, even if ISO C permits a wider variety of standards-compliant behaviour.
Further, "undefined" behaviour in the sense that "nasal demons" refers to is more than just behaviour where the implementation defines it - it's behaviour where the implementation is allowed to refuse to define what it means. E.g. int i = 0; ++i++ += i++ + ++i; is a common example of undefined behaviour - because it breaks the rules on sequence points, the implementation does not have to give it any meaning at all.
Posted Sep 4, 2018 21:17 UTC (Tue)
by rweikusat2 (subscriber, #117920)
[Link] (2 responses)
As I already wrote: "It is unknown, hence ..." is logically invalid.
Posted Sep 5, 2018 8:45 UTC (Wed)
by farnz (subscriber, #17727)
[Link] (1 responses)
Exactly, but that sort of reasoning about a standard is common - e.g. "The POSIX standard says that int must be at least 32 bits in size, therefore I can assume that long is 64 bits in size". The point of "nasal demons" is that it is equally correct to say "The POSIX standard says that int must be at least 32 bits in siz, therefore assuming long is 64 bits in size will make demons fly out of your nose" - both are logically invalid statements, but while the first sounds plausible, the second does not.
In other words, it's a way of pointing out that your conclusion does not follow from your antecedents in a comical fashion, and thus that you need to go back and fill in your chain of reasoning.
Posted Sep 6, 2018 10:17 UTC (Thu)
by Wol (subscriber, #4433)
[Link]
Cheers,
Undefined behaviour
Undefined behaviour
Undefined behaviour
Wol
