On Monday 07 May 2001 08:26, Tobias Ringstrom wrote:
> On Sun, 6 May 2001, David S. Miller wrote:
> > It is the most straightforward way to make a '1' or '0'
> > integer from the NULL state of a pointer.
>
> But is it really specified in the C "standards" to be exctly zero or
> one, and not zero and non-zero?
Yes, and if we did not have this stupid situation where the C language
standard is not freely available online then you would not have had to
ask.</rant>
> IMHO, the ?: construct is way more readable and reliable.
There is no difference in reliability. Readability is a matter of
opinion - my opinion is that they are equally readable. To its credit,
gcc produces the same ia32 code in either case:
int foo = 999;
return 1 + !!foo;
<main+6>: movl $0x3e7,0xfffffffc(%ebp)
<main+13>: cmpl $0x0,0xfffffffc(%ebp)
<main+17>: je 0x80483e0 <main+32>
<main+19>: mov $0x2,%eax
<main+24>: jmp 0x80483e5 <main+37>
<main+26>: lea 0x0(%esi),%esi
<main+32>: mov $0x1,%eax
<main+37>: mov %eax,%eax
int foo = 999;
return foo? 2: 1;
<main+6>: movl $0x3e7,0xfffffffc(%ebp)
<main+13>: cmpl $0x0,0xfffffffc(%ebp)
<main+17>: je 0x80483e0 <main+32>
<main+19>: mov $0x2,%eax
<main+24>: jmp 0x80483e5 <main+37>
<main+26>: lea 0x0(%esi),%esi
<main+32>: mov $0x1,%eax
<main+37>: mov %eax,%eax
-- Daniel - 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 : Mon May 07 2001 - 21:00:24 EST