###前提・実現したいこと
byte の論理和でコンパイルエラーが発生するのですが、
どのような基準でエラーとしているのか
ご存知の方がいらっしゃいましたらご教授願います。
###発生している問題・エラーメッセージ
コンパイルエラーはキャストで解決できるのでエラー自体は問題ではないのですが、
以下のコードを「なぜエラーとするのか」仕組みをご存じの方がいらっしゃいましたら、
ご教授頂けると助かります。
###該当のソースコード
List<byte> frame = new List<byte>() { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
byte[] arrayByte = frame.ToArray();
byte data = 0xFF & 0xFF; ---------(1)
data = arrayByte[0]; -----------------(2)
data = arrayByte[0] & 0xFF; ---------(3)
data = arrayByte[0] & (byte)0xFF; -----(4)
data = (byte)( arrayByte[0] & 0xFF ); -----(5)
(1)(2)(5) はエラーになりません。
(3)(4) は int を byte に暗黙的に変換できませんと言われます。
ひょっとして論理和とはいえ構文的には演算なので、
「桁上がり」が関係するのかと思い、(1)は 0xFF & 0xFF にしてみましたが、
エラーにはなりませんでした...
(5)で解決するのですが、それなら(4) でも解決しそうなのですが...
ちょっとモヤモヤするので質問させて頂きました。
アドバイスの程宜しくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
visual studio 2013
.NET Framework 3.5
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/17 12:15