On Wed, 13 Apr 2011 09:44:54 -0400, Emil Madsen <sove...@gmail.com> wrote:

On 13 April 2011 14:36, Steven Schveighoffer <schvei...@yahoo.com> wrote:


I know that if(xyz); is not *ever* what I meant, but in C it compiles.
However, in D, it tells me I shouldn't do that. What results is less bugs
because I can't make that mistake without the compiler complaining.

Does D throw an error at; if(expression && expression)*; *or only at
if(expression);
Because you could actually use the first one, alike this:
<code>
#include <stdio.h>

bool test()
{
    printf("test\n");
    return false;
}

bool test2()
{
    printf("test2\n");
    return true;
}

int main()
{
    if(test() && test2());
}
</code>
Output = "test"
if test returns true, then: Output = "test" + "test2"

Simply because its conditional, and if the first one fails, why bother
evaluating the rest?

if(condition1 && condition2); is an error.

However, an expression can be a statement:

condition1 && condition2;

Note, you can get around the limitation if that *really is* what you meant by doing:

if(expression) {}

An if statement is hard to justify for this, but I can see a while or for loop making sense here.

-Steve

Reply via email to