byte a;
byte b;
...
{
a = (a ^ b)
}
....
Конвертация числа при логической операции
Код:
Это не работает пока не сделать type cast, т.е вставить (byte)
перед (a ^ b).
Ну так вот таких операций в коде много и я так понимаю из-за того что постоянно происходит конверсия int->byte прога в итоге будет работать медленнее.
В случае со сложением можно к примеру написать так a += b и конверсии не надо. Можно ли сделать что-то подобное в случае с битовыми операциями?
А писать код a ^= b; не пробовали?
Код:
byte a;
byte b;
byte c;
...
{
a = (byte)(b & c);
a = (byte)(b - a);
}
....
byte b;
byte c;
...
{
a = (byte)(b & c);
a = (byte)(b - a);
}
....
И вообще, результат целочисленного выражения должен приводиться к типу с наибольшей разрядностью. А здесь разрядность одинаковая - вообще странная проблема :confused:
Цитата:
Код:
a = (byte)(b - a);
Код:
-a += b;
Цитата:
А может быть, просто убрать скобки
Если не писать (byte) то пишет:
"Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?)"
Цитата:
-a += b;
Не катит:
"The left-hand side of an assignment must be a variable, property or indexer"
Цитата:
Если не писать (byte) то пишет:
"Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?)"
"Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?)"
пеавильно пишет, т.к. при выполнении операций над переменными типа byte(char, short, sbyte, ushort) происходит автоматическое преобразование типов в [COLOR=blue]int[/COLOR], поэтому ты обязан сделать приведение типов, или записывай ответ в переменную типа [COLOR=blue]int[/COLOR].
Цитата:
Если не писать (byte) то пишет:
"Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?)"
не ожидала, но точно, я проверила. и скобки не помагают, только так:
Код:
[SIZE=2]a = -a;
a += b;
[/SIZE]
a += b;
[/SIZE]
Цитата:
Конвертация числа при логической операции
операция ^ логическая если операнды типа bool, и побитовая(поразрядная) если операнды имеют числовой тип(byte, int etc., но не типы с плавающей точкой).[/SIZE]