Watcom C 的笔记9 Watcom C (9)
运算优先级的问题
C语言中,“+ -”的优先级高于“<< >>”因此,下面这段程序无法得到期望值:
#include <stdio.h>
#include <stdint.h>
void main ()
{
uint8_t command_write=1;
uint8_t command_read=2;
uint8_t command_erase=3;
uint8_t command_read_status=4;
uint64_t rst=0xFFFFFFFF;
rst = command_write+
command_read<<8+
command_erase<<16+
command_read_status<<24;
printf("[%08lX]\n",rst);
}
最简单的方法是将表达式改为下面的形式:
rst = command_write+
(command_read<<8)+
(command_erase<<16)+
(command_read_status<<24);
9:23 2008-1-21