关于程序执行遇到的疑问

2020-01-22 12:06发布

假如在一个函数中有两个if语句:

void led_on(int i)
{
if( i&0x1000==0x1000)
{;}
if( i&0x0800==0x0800)
{;}
}

如果i=0x1800的话,两个if语句会不会按照顺序执行呢,但是仿真好像不行,但是我又希望他们能都执行,该怎门办呢,求解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
bbglx
1楼-- · 2020-01-23 15:07
如果没猜错的话,楼主优先级错了,加个括号
void led_on(int i)
{
if( (i&0x1000)==0x1000)
{;}
if( (i&0x0800)==0x0800)
{;}
}
maimaige
2楼-- · 2020-01-23 15:46
编译的时候,把优化等级变低,或者加volatile
sdkw
3楼-- · 2020-01-23 20:09
i=0x0000试试看
sailyu
4楼-- · 2020-01-23 22:04
 精彩回答 2  元偷偷看……
zhoupy
5楼-- · 2020-01-23 22:18
应该是可以执行的,如第一个后加了break就不行了
ahong2hao
6楼-- · 2020-01-23 23:32
优先级的问题,
一律按照你想要的计算顺序加上(),切记切记,
这是我多年来的经验教训啊。

一周热门 更多>