Problem with using && as shorthand for if
Jay Byrd
JayByrd at rebels.com
Mon Sep 6 19:11:04 PDT 2010
On Fri, 20 Aug 2010 20:33:43 +0000, Iain Buclaw wrote:
> == Quote from Ersin Er (ersin.er at gmail.com)'s article
>> Hi,
>> The following code compiles and outputs "1 = 1" as expected: 1 == 1 &&
>> writeln("1 = 1");
>> However, the following code fails to compile (although it should not):
>> 1 == 2 && writeln("1 = 2");
>> The error is as follows:
>> Error: integral constant must be scalar type, not void What I expect
>> that the second code should also compile and output nothing when
> executed.
>> Am I missing something?
>> Thanks.
>
> Because you are dealing with literals here, it's best to assume the
> compiler will try to evaluate and compile down the code you write.
>
> The first example you give will be optimized down to just
>
> writeln("1 = 1");
>
> Whilst your second example is simply
>
> false;
>
>
> Regards
And the relevance of that to the OP's post which noted that
1 == 2 && writeln("1 = 2");
produces an error message complaining about void where a scalar is
expected is what?
Also irrelevant are statements that Andrei is wrong or even has taken
leave of his senses merely for accurately describing in his book a
particular bit of D's semantics that he may or may not have had any role
in crafting.
More information about the Digitalmars-d-learn
mailing list