Talk About Network



Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ Moderated > shift operator ...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 7 Topic 9493 of 9592
Post > Topic >>

shift operator undefined behavior

by Olivier Langlois <olanglois@[EMAIL PROTECTED] > Apr 11, 2008 at 03:33 PM

Hi,

I was expecting:

int main( int argc, char *argv[] )
{
   unsigned char m = 32;
   register unsigned mask = (1<<m);
   std::cout << std::hex << mask << '\n';
   return 0;
}

to print 0 but instead this program compiled with g++ prints 1!

If I change (1<<m) by (1<<32) or if change the program for

int main( int argc, char *argv[] )
{
   unsigned char m = 31;
   register unsigned mask = (1<<m)<<1;
   std::cout << std::hex << mask << '\n';
   return 0;
}

it gives me the expected 0.

In the C++ standard document, section 5.8. It is written "The behavior
is undefined if the right operand is negative, or greater than or
equal to the length in bits of the promoted left operand."

The root for this behavior probably originates from C but I am really
curious why the standard makes the shift operator so unintuitive.

Greetings,
Olivier Langlois
http://www.olivierlanglois.net
http://blog.olivierlanglois.net

-- 
      [ See http://www.gotw.ca/resources/clcm.htm
for info about ]
      [ comp.lang.c++.moderated.    First time posters: Do this! ]




 7 Posts in Topic:
shift operator undefined behavior
Olivier Langlois <olan  2008-04-11 15:33:41 
Re: shift operator undefined behavior
Jack Klein <jackklein@  2008-04-12 12:13:12 
Re: shift operator undefined behavior
"Bo Persson" &l  2008-04-13 00:43:14 
Re: shift operator undefined behavior
Olivier Langlois <olan  2008-04-13 00:43:12 
Re: shift operator undefined behavior
=?ISO-8859-1?Q?Daniel_Kr=  2008-04-13 00:43:11 
Re: shift operator undefined behavior
Jack Klein <jackklein@  2008-04-14 10:43:12 
Re: shift operator undefined behavior
Greg Herlihy <greghe@[  2008-04-14 13:13:15 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Tue May 13 4:02:18 CDT 2008.