D arithmetic problem
davidl
davidl at nospam.org
Tue Jun 2 19:50:11 PDT 2009
在 Wed, 03 Jun 2009 10:48:02 +0800,Tim Matthews <tim.matthews7 at gmail.com>
写道:
> davidl wrote:
>> Following two piece of code demonstrate different behaviors currently.
>> import std.stdio;
>> void main()
>> {
>> uint v;
>> v=31234;
>> byte t= -1;
>> v |= t;
>> writefln(v);
>> }
>> Output:4294967295
>> import std.stdio;
>> void main()
>> {
>> uint v;
>> v=31234;
>> byte t= -1;
>> v |= cast(ubyte)t;
>> writefln(v);
>> }
>> Output:31487
>> I would always want the second result. What's your opinion?
>>
>
> should be in d.learn but try this:
>
> import std.stdio;
> void main()
> {
> uint v;
> v=31234;
> ubyte t= -1;
> v |= t;
> writefln(v);
> }
I mean the first behavior can cause problems. I doubt any coder would try
to get that result by writing that piece of code. I ported some C# source
to D, and I got this semantic different issue.
--
使用 Opera 革命性的电子邮件客户程序: http://www.opera.com/mail/
More information about the Digitalmars-d
mailing list