## D - ? Operator Bug

• J C Calvarese (30/30) Feb 20 2003 I think I found a bug in the conditional ? operator. (Or maybe it's
```I think I found a bug in the conditional ? operator.  (Or maybe it's
just that this is my first time to use this operator.)  In the following
example, D truncates the first "one" into "o".  The other 7 cases work
as I expected.  I think what happens is if the two results from the
condition are different lengths, the length of the "else" result is used
for both.  If the "then" result is shorter, the end of it is chopped off.

Also, does anyone know why \n doesn't always give me a carriage return
(such as between the fourth and fifth line)?

Justin

int main()
{
int i = 1;
printf("i=1:" \n\0);
printf(cast(char[]) ((i == 1) ? "one" : "2" ) ~ "      " ~ \n\0 );
printf(((i == 1) ? cast(char[]) "one" : cast(char[]) "2" ) ~ "
" ~ \n\0 );
printf(cast(char[]) ((i == 1) ? "1" : "two" ) ~ "      " ~ \n\0);
printf(\n\0);   /* The "\n" doesn't seem to work above. */
printf(((i == 1) ? cast(char[]) "1" : cast(char[]) "two" ) ~ "
" ~ \n\n\0 );

i = 2;
printf("i=2:" \n\0);
printf(cast(char[]) ((i == 1) ? "one" : "2" ) ~ "      " ~ \n\0 );
printf(((i == 1) ? cast(char[]) "one" : cast(char[]) "2" ) ~ "
" ~ \n\0 );
printf(cast(char[]) ((i == 1) ? "1" : "two" ) ~ "      " ~ \n\0 );
printf(((i == 1) ? cast(char[]) "1" : cast(char[]) "two" ) ~ "
" ~ \n\n\0 );

return 0;
}
```
Feb 20 2003