www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - bitwise operation and type

reply "bioinfornatics" <bioinfornatics fedoraproject.org> writes:
why this fail http://www.dpaste.dzfl.pl/a6d6acf4

I want to works with ubyte -> 0000 0000
i do not want use int for manipulating these byte and consume 
more memory as need!
Nov 20 2013
next sibling parent Jonathan M Davis <jmdavisProg gmx.com> writes:
On Thursday, November 21, 2013 08:21:37 bioinfornatics wrote:
 why this fail http://www.dpaste.dzfl.pl/a6d6acf4
 
 I want to works with ubyte -> 0000 0000
 i do not want use int for manipulating these byte and consume
 more memory as need!
All arithmetic operations on integer types (including bitwise manipulations) operate on the original type or (u)int (whichever is larger). So, if you want to manipulate a ubyte and then assign the result to a ubyte, you need to cast it. It's the same with C/C++ except that C/C++ just silently do the cast for you, whereas D requires an explicit cast for narrowing conversions. - Jonathan M Davis
Nov 20 2013
prev sibling parent Ellery Newcomer <ellery-newcomer utulsa.edu> writes:
On 11/20/2013 11:21 PM, bioinfornatics wrote:
 why this fail http://www.dpaste.dzfl.pl/a6d6acf4
as with c, most of the integer operators return int for integral types smaller than int. also, this is a case where a += b does something different than a = a + b i guess the former automatically inserts a cast or something.
 I want to works with ubyte -> 0000 0000
 i do not want use int for manipulating these byte and consume more
 memory as need!
tough. use a cast.
Nov 20 2013