条件演算子は変数でオーバーフローします。 "if ... else ..."にすると、すべてがうまくいきます。なぜですか?ばかばかしい...結果は次のようにコードが行く、valueResult2 = 24、 valueResult1 = 255 次のとおりです。C#の条件演算子については、変数がオーバーフローします
int valueInput1 =280;
byte valueResult1 =0;
if (valueInput1 > 255)
{
valueResult1 = 255;
}
else if (valueInput1 < 0)
{
valueResult1 = 0;
}
else
{
valueResult1 = (byte)valueInput;
}
int valueInput2 =280;
byte valueResult2 =0;
valueResult2 = (byte) ((valueInput2 > 255) ? 255 : (byte)valueInput2);
valueResult2 = (byte)((valueInput2 < 0) ? 0 : (byte)valueInput2);
何を期待されていませんか? int> 255を1バイトに強制しています! –
なぜ 'int'を' byte'にキャストしているのか不思議です。バイトは255を超えてはいけません。 – STLDeveloper
出力変数はバイトでなければなりません。 – wujian