Hi all I write a sample code like a = 1 << b; when b = 0 , The result for a will get 2 If I uncheck "Enable ANSI integer promotion rules " ,It will get correct answer 1 can anyone tell me why ?? Thanks a lot
Thanks for replay I have a ready to this ,Please see it #define ENABLE 1 uchar volatile xdata *ptr_reg=0x8000; bug0 =0; bug1 =0; uchar b = pre_reg[0]; a = (ENABLE << b); if ( b != 0 ) bug0++; if ( a != 1 ) bug1++; after I run this ,bug0 is zero ,but bug1 is nonzero. I also have run this code in VC60,and it work fine. Thanks for your kind help
uchar volatile xdata *ptr_reg=0x8000; bug0 =0; bug1 =0; uchar b = pre_reg[0];
Thanks for correct my type error^^""" Sorry,I have already delete the code so i just type it again. It is ptr_reg not pre_reg。 Thanks a lot
Do you call the function from an interrupt service routine. The code that you have posted works correct for registerbank 0, but will fail if you call it from an interrupt service routine that uses a different register bank. See also: http://www.keil.com/support/docs/2201.htm Reinhard