Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Конвертация числа при логической операции

12K
24 октября 2006 года
sliderX
16 / / 12.08.2006
Есть такой код:

 
Код:
byte a;
byte b;

...
     {
          a = (a ^ b)
     }
....


Это не работает пока не сделать type cast, т.е вставить (byte)
перед (a ^ b).
Ну так вот таких операций в коде много и я так понимаю из-за того что постоянно происходит конверсия int->byte прога в итоге будет работать медленнее.
В случае со сложением можно к примеру написать так a += b и конверсии не надо. Можно ли сделать что-то подобное в случае с битовыми операциями?
309
24 октября 2006 года
el scorpio
1.1K / / 19.09.2006
А писать код a ^= b; не пробовали?
12K
24 октября 2006 года
sliderX
16 / / 12.08.2006
Спасибо, а вот в этих случаях что-нибудь можно сделать?

 
Код:
byte a;
byte b;
byte c;
...
     {
          a = (byte)(b & c);
          a = (byte)(b - a);
     }
....
309
24 октября 2006 года
el scorpio
1.1K / / 19.09.2006
А может быть, просто убрать скобки :D
И вообще, результат целочисленного выражения должен приводиться к типу с наибольшей разрядностью. А здесь разрядность одинаковая - вообще странная проблема :confused:
242
24 октября 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
 
Код:
a = (byte)(b - a);


 
Код:
-a += b;
12K
24 октября 2006 года
sliderX
16 / / 12.08.2006
Цитата:
А может быть, просто убрать скобки


Если не писать (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"

242
24 октября 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Если не писать (byte) то пишет:
"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].

242
24 октября 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:

Если не писать (byte) то пишет:
"Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?)"


не ожидала, но точно, я проверила. и скобки не помагают, только так:

 
Код:
[SIZE=2]a = -a;
a += b;
[/SIZE]
[SIZE=2]

Цитата:
Конвертация числа при логической операции


операция ^ логическая если операнды типа bool, и побитовая(поразрядная) если операнды имеют числовой тип(byte, int etc., но не типы с плавающей точкой).[/SIZE]

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог