一个KEIL编译的问题

my9999 2010-10-20 12:01:01
total+=*(ptemp_phase_value+(i+j)%32);
改成total+=*(ptemp_phase_value+(i+j)&0x1F);
compile會有error,提示为C193 & bad operand type
如果改成total+=*(ptemp_phase_value+((i+j)&0x1F));就不会有错误,不知道是什么原因.请大家指点
...全文
109 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
my9999 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wackestar 的回复:]

ptemp_phase_value是什么类型的变量?
&的优先级很低,所以total+=*(ptemp_phase_value+(i+j)&0x1F);中在进行&运算是前面的变量会变成和ptemp_phase_value相同的类型。如果类型不对就不能进行运算了。
[/Quote]
ptemp_phase_value是32的,你的意思是说&两边的数据类型要匹配,ptemp_phase_value&0x1F,出错???
schlafenhamster 2010-10-20
  • 打赏
  • 举报
回复
C中的优先级是很难记的,不知道是就加括号,这个最简单
wackestar 2010-10-20
  • 打赏
  • 举报
回复
ptemp_phase_value是什么类型的变量?
&的优先级很低,所以total+=*(ptemp_phase_value+(i+j)&0x1F);中在进行&运算是前面的变量会变成和ptemp_phase_value相同的类型。如果类型不对就不能进行运算了。
dian_technology 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 my9999 的回复:]
引用 1 楼 wackestar 的回复:

ptemp_phase_value是什么类型的变量?
&的优先级很低,所以total+=*(ptemp_phase_value+(i+j)&0x1F);中在进行&运算是前面的变量会变成和ptemp_phase_value相同的类型。如果类型不对就不能进行运算了。

ptemp_phase_val……
[/Quote]
不是&数据要匹配,是指针不能进行&操作。

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧