comma operator
    Sivo Schilling 
    i-b-p at gmx.net
       
    Mon Mar 10 09:36:52 PDT 2008
    
    
  
In C/C++ comma operator allows grouping two statements where one is expected.
Example (C/C++):
-------
#include <stdio.h>
int validate(int pos)
{
    return (--pos <= 0 || --pos <= 0), pos;
}
void main()
{
  printf("validate(1) gives %d\n", validate(1));
  printf("validate(2) gives %d\n", validate(2));
  printf("validate(10) gives %d\n", validate(10));
}
-------
Output:
validate(1) gives 0
validate(2) gives 0
validate(10) gives 8
The example above now in D (DMD 1.x/2.x):
-------
import std.stdio;
int validate(int pos)
{
    return (--pos <= 0 || --pos <= 0), pos;
}
void main()
{
  writefln("validate(1) gives ", validate(1));
  writefln("validate(2) gives ", validate(2));
  writefln("validate(10) gives ", validate(10));
}
-------
Output:
validate(1) gives 1
validate(2) gives 2
validate(10) gives 10
Is this expected behaviour or if there's something I've missed ?
Any suggestions ?
Regards, Sivo.
    
    
More information about the Digitalmars-d-learn
mailing list