sscanf in conditional - what should happen?

Chris Angelico <[email protected]>
Newsgroups gmane.comp.lang.pike.user
Message-ID <CAPTjJmqyQpVvchCXKdG1_HzvYkRt4KWZuzeHtVrC=QVApAdNXg@mail.gmail.com>
Is this meant to be legal?

if (argv[1]=="#zero" || sscanf(argv[1],"#%d",int x))
{
    ... code using x ...
}

If the first part of the condition is true, x ought to be UNDEFINED. I
had code conceptually similar to this, but in the case where the first
condition held, x inexplicably had a completely different object
(probably the top of the stack; it was a Stdio.Stat object that I'd
used elsewhere). But am I trying to depend on unreasonable code here?

Breaking out the declaration to the line above solves the problem. I'm
just curious as to whether this ought to work or is pure chance.

ChrisA
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.