C语言 复杂运算 <<在左边右边 运算优先问题?
发布网友
发布时间:2022-05-03 06:00
我来回答
共2个回答
热心网友
时间:2023-10-12 02:57
(0x80<<((LCD_Currentfonts->Width/12)*8))>>counter)
这条语句的意思就是 0x80先左移(LCD_Currentfonts->Width/12)*8)位,然后再右移counter位;
例如 0x80 << 3 >> 2; 结果为十进制整数 256
热心网友
时间:2023-10-12 02:57
假定括号次序如下(没有最右一个 ")" ):
(0x80 << ((LCD_Currentfonts->Width / 12 ) * 8 ) ) >> counter
令: x1 等于 ((LCD_Currentfonts->Width / 12 ) * 8 )
原式 写成: (0x80 << x1) >> counter
计算次序:第一步,括号内的优先, 把 0x80 左移 x1 位
第二步,把第一步的结果 右移 counter 位。
===========
0x80 << x1 >> counter 与
0x80 >> counter << x1
在数据有上界超界 或下界超界 情况下, 左移右移 的先后对结果 有 影响。
在无 上下界超界情况下,左移右移 的先后对结果 没 影响。
例如:x1=3,counter=8;
0x80 << x1 >> counter 得 0x4
0x80 >> counter << x1 得 0x0
热心网友
时间:2023-10-12 02:57
(0x80<<((LCD_Currentfonts->Width/12)*8))>>counter)
这条语句的意思就是 0x80先左移(LCD_Currentfonts->Width/12)*8)位,然后再右移counter位;
例如 0x80 << 3 >> 2; 结果为十进制整数 256
热心网友
时间:2023-10-12 02:57
假定括号次序如下(没有最右一个 ")" ):
(0x80 << ((LCD_Currentfonts->Width / 12 ) * 8 ) ) >> counter
令: x1 等于 ((LCD_Currentfonts->Width / 12 ) * 8 )
原式 写成: (0x80 << x1) >> counter
计算次序:第一步,括号内的优先, 把 0x80 左移 x1 位
第二步,把第一步的结果 右移 counter 位。
===========
0x80 << x1 >> counter 与
0x80 >> counter << x1
在数据有上界超界 或下界超界 情况下, 左移右移 的先后对结果 有 影响。
在无 上下界超界情况下,左移右移 的先后对结果 没 影响。
例如:x1=3,counter=8;
0x80 << x1 >> counter 得 0x4
0x80 >> counter << x1 得 0x0