Mail Archives: djgpp/2005/02/09/17:16:40
| X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f
|
| From: | Mok-Kong Shen <mok-kong DOT shen AT t-online DOT de>
|
| Newsgroups: | comp.os.msdos.djgpp
|
| Subject: | bit shifting problem
|
| Date: | Wed, 09 Feb 2005 23:07:02 +0100
|
| Organization: | T-Online
|
| Lines: | 26
|
| Message-ID: | <cue1dv$n1b$00$1@news.t-online.com>
|
| Mime-Version: | 1.0
|
| X-Trace: | news.t-online.com 1107986688 00 23595 K2CQrh1L97nrSXGe 050209 22:04:48
|
| X-Complaints-To: | usenet-abuse AT t-online DOT de
|
| X-ID: | EejvXaZVwetWeVcYdP-rP-K+9usH1WK3CjJbxXU3m8WpzvVpLLX5ZK
|
| User-Agent: | Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)
|
| X-Accept-Language: | en-us, en
|
| To: | djgpp AT delorie DOT com
|
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp
|
| Reply-To: | djgpp AT delorie DOT com
|
Sorry for posing yet another, possibly also newbie, problem.
In the following code I expected the values of k and n to be
both 0, since shifting 32 bits for a 32-bit word effectively
clears it. But the values printed were 42800637 and 1369620384.
The compiler did give the warning message "right shift count
>= width of type". But shifting 32 bits (not exceeding the
word size) is allowed or is it forbidden by the C standard?
Thanks.
M. K. Shen
--------------------------------
#include <stdio.h>
int main()
{ int i,j,k,n;
unsigned long w;
w=42800637;
i=w>>31;
j=i>>1;
k=w>>32;
n=(w<<5)>>32;
printf("%lu %d %d %d %d\n",w,i,j,k,n);
return 0;
}
- Raw text -