Re: [PATCH] Re: sscanf("-1", "%d", &i) fails, returns 0

From: Andreas Schwab (schwab@suse.de)
Date: Mon Nov 11 2002 - 15:08:41 EST


"Randy.Dunlap" <rddunlap@osdl.org> writes:

|> Andreas Schwab wrote:
|> |> IOW, asking for an unsigned number (in the format string)
|> |> and getting "-123" does return 0.
|>
|> | Not in C. According to the standard scanf is supposed to convert the
|> | value to unsinged and return that.
|> OK, thanks, I found that in the C spec.
|>
|> Now what does it mean to "convert the value to an unsigned and return
|> that." This is the same as above, isn't it?
|> I.e., on the scanf() side, there is no conversion needed; just store the
|> value.

The C standard also supports ones-complement and sign-magnitude
representation of signed integers where signed<->unsigned conversion is a
non-trivial operation in the sense that the bit representation does
change. And scanf knows the signedness of the destination due to the
format spec.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Nov 15 2002 - 22:00:23 EST