public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ray Lee <ray-lk@madrabbit.org>
To: "Randy.Dunlap" <rddunlap@osdl.org>
Cc: hps@intermeta.de, schwab@suse.de,
	Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] Re: sscanf("-1", "%d", &i) fails, returns 0
Date: 11 Nov 2002 12:25:34 -0800	[thread overview]
Message-ID: <1037046334.22906.117.camel@orca> (raw)
In-Reply-To: <Pine.LNX.4.33L2.0211111019300.23954-100000@dragon.pdx.osdl.net>

On Mon, 2002-11-11 at 11:09, Randy.Dunlap wrote:
> | It only sounds strange at first. It actually means that scanf is
> | consistent with C's rules of assignment between mixed types. For
> | example:
<snip>
> These values (-100 and 4294967196) are the same bits, just observed/used
> in a different manner.

I probably didn't state it very clearly, but that was what I was getting
at. It's the same value after a cast. As Andreas points out though, it
may not be bit-for-bit identical on machines that don't use two's
complement. That's why the conversion code cares about the format
specifiers, it seems.

> Now what does it mean to "convert the value to an unsigned and return
> that."  This is the same as above, isn't it?

Explicitly, in the scan conversion you'd do a:

  unsigned int *u = (unsigned int *) va_arg(args,long long *);
  *u = (unsigned int) converted_value;

...from wherever you get converted_value from (simple_strtoul? I haven't
looked at that routine). (The cast here is implied if left off, I'm just
being explicit.)

> I.e., on the scanf() side, there is no conversion needed; just store the
> value.

Almost true, as Andreas pointed out. You have to be careful that the
target you're storing to has the correctly declared type inside the
conversion routine. 

Ray


  parent reply	other threads:[~2002-11-11 20:18 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-11 14:54 [PATCH] Re: sscanf("-1", "%d", &i) fails, returns 0 Ray Lee
2002-11-11 19:09 ` Randy.Dunlap
2002-11-11 20:08   ` Andreas Schwab
2002-11-11 20:25   ` Ray Lee [this message]
2002-11-13  7:06     ` Randy.Dunlap
2002-11-14 17:34       ` Ray Lee
  -- strict thread matches above, loose matches on Subject: below --
2002-11-08 13:32 Douglas Gilbert
2002-11-08 19:22 ` [PATCH] " Randy.Dunlap
2002-11-08 19:41   ` Richard B. Johnson
2002-11-08 19:59     ` Randy.Dunlap
2002-11-08 20:19       ` Linus Torvalds
2002-11-08 22:09         ` Randy.Dunlap
2002-11-10 13:41           ` Henning P. Schmiedehausen
2002-11-11  3:05             ` Randy.Dunlap
2002-11-11  4:19               ` Randy.Dunlap
2002-11-11  9:27               ` Henning Schmiedehausen
2002-11-11 14:38               ` Andreas Schwab
2002-11-08 20:23       ` Richard B. Johnson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1037046334.22906.117.camel@orca \
    --to=ray-lk@madrabbit.org \
    --cc=hps@intermeta.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rddunlap@osdl.org \
    --cc=schwab@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox