Thank you for your involved answer. It just seemed weird to me that an
operation on two variables typed as 'short' were returning an 'int'.
But it seems to be a feature, not a bug :)

Miguel.


On Tue, 25 Jan 2005 14:30:22 +0200, Mike Welham <[EMAIL PROTECTED]> wrote:
> Hi Miguel,
> 
> > bitwise.cs(11) error CS0029: Cannot convert implicitly from `int' to
> > `short'
> > Compilation failed: 1 error(s), 0 warnings
> 
> > If I do not misunderstand the compiler message, it seems that for some
> > reason the result of or-ing together the hiword and the loword
> > variables results in an 'int' (32-bit integer number, I suppose).
> 
> The compiler is implicitly converting the two r-values to ints prior to doing 
> to doing the 'or', and then complaining about trying to implicitly convert 
> the resultant int to a short.
> 
> There is no predefined C# 'or' for shorts, and the best match is the 'or' for 
> ints. See the C# spec quotes below.
> 
> > Why is that? It is easily fixed by explicitly casting the result of
> > the bitwise or operation down to a short, but I can't help feeling
> > that this feels weird: is it a C# specification feature?
> 
> The C# spec says:
> 
> <spec section 14.10>
> 
> For an operation of the form x op y, where op is one of the logical 
> operators, overload resolution (�14.2.4) is applied to select a specific 
> operator implementation. The operands are converted to the parameter types of 
> the selected operator, and the type of the result is the return type of the 
> operator.
> 
> </spec>
> 
> And
> 
> <spec section 14.10.1>
> 
> The predefined integer logical operators are:
> 
> int operator &(int x, int y);
> uint operator &(uint x, uint y);
> long operator &(long x, long y);
> ulong operator &(ulong x, ulong y);
> int operator |(int x, int y);
> uint operator |(uint x, uint y);
> long operator |(long x, long y);
> ulong operator |(ulong x, ulong y);
> int operator ^(int x, int y);
> uint operator ^(uint x, uint y);
> long operator ^(long x, long y);
> ulong operator ^(ulong x, ulong y);
> 
> </spec>
> 
> Best Regards
> 
> Mike
> _______________________________________________
> Mono-list maillist  -  [email protected]
> http://lists.ximian.com/mailman/listinfo/mono-list
>
_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to