■
ちょっと実験。intとuintに対する比較
int a= -5;
uint b= 5;
if(a > b)
printf("a > b");
同じサイズのsignedとunsignedの比較した場合、compile errorがでるかと思ったんだけど普通にコンパイルできますね…確かに一々cast演算子つけるのも面倒か。けどD言語にwarningがない以上、compile errorが正しい気が。ただ、if(-1>1)の比較。これはバグでは…
追記:
<, <=, >, >= 式の時は、 符号付き整数と符号なし整数の比較はエラーとなります。 明示的にどちらかのオペランドをキャストしてください。
http://www.kmonos.net/alang/d/expression.html
とあるからバグみたいだ。dmd1.10で確認。多分既にnewsgropeにもバグ報告されてるんだろうけど探すの面倒。