高手给指点一下,下面两种写法的区别再哪里

yilaozhuang 2009-02-17 03:03:24
差不多的两句话,顺序不同,结果就是一行可以通过编译,一行报错,高手给指点一下,具体如下:
_iout = (xf+_l)->topflags & XF_IOPEN || ((bs+_bs)->iisland != pwrglobal->island);
上面这句报错为:
fd_fmjjyu.cpp(558) : error C2143: syntax error : missing ';' before '||'

跟上面差不多意思的一句话:
_dead = ((bs+_bs)->iisland != pwrglobal->island) || (bs+_bs)->q & BS_OPEN;
这句编译就可以通过。
这两句话的含义都是一样的,只是第一局把 位与& 运算放在前面,不等于放后面,然后进行 或|| 运算,结果报错。
下面把 不等于!= 运算 放前面, 位与& 放后面 ,就可以安全通过。
请高手指点下这是什么原因。谢谢了!
...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yilaozhuang 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 waizqfor 的回复:]
引用楼主 yilaozhuang 的帖子:
差不多的两句话,顺序不同,结果就是一行可以通过编译,一行报错,高手给指点一下,具体如下:
_iout = (xf+_l)->topflags & XF_IOPEN || ((bs+_bs)->iisland != pwrglobal->island);
上面这句报错为:
fd_fmjjyu.cpp(558) : error C2143: syntax error : missing ';' before '||'

跟上面差不多意思的一句话:
_dead = ((bs+_bs)->iisland != pwrglobal->island) || (bs+_bs)->q & BS…
[/Quote]

就是声明的时候出的问题,宏定义的时候最后面加了个分号。
yilaozhuang 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hai040 的回复:]
XF_IOPEN是什么?
[/Quote]

XF_IOPEN是提前定义的常量,就是一个具体的数字,与这个没有关系。
我也觉得两个的顺序没关系,但是编译的时候两种写法就是有一种报错
bfhtian 2009-02-17
  • 打赏
  • 举报
回复
在||前面加个括号试下
Dinelgua 2009-02-17
  • 打赏
  • 举报
回复
和& 或 !=位置无关
下面测试代码编译ok

void main()
{
int a=0,b=1,c=2,d=3;

if (a = b & c || (d != a))
{
}
a = b & c || (d != a);
}

hai040 2009-02-17
  • 打赏
  • 举报
回复
XF_IOPEN是什么?
wzg112 2009-02-17
  • 打赏
  • 举报
回复
没看出来哪错!
waizqfor 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 yilaozhuang 的帖子:]
差不多的两句话,顺序不同,结果就是一行可以通过编译,一行报错,高手给指点一下,具体如下:
_iout = (xf+_l)->topflags & XF_IOPEN || ((bs+_bs)->iisland != pwrglobal->island);
上面这句报错为:
fd_fmjjyu.cpp(558) : error C2143: syntax error : missing ';' before '||'

跟上面差不多意思的一句话:
_dead = ((bs+_bs)->iisland != pwrglobal->island) || (bs+_bs)->q & BS_OPEN;
这句编译就可以通过。 …
[/Quote]
_iout = (xf+_l)->topflags & XF_IOPEN || ((bs+_bs)->iisland != pwrglobal->island);
(错误是在这个位置停住的)
检查下你的XF_IOPEN 定义的语句在那 估计是声明的时候有问题
a_rockboy 2009-02-17
  • 打赏
  • 举报
回复
XF_IOPEN 未定义,应该和你说的那个没关系。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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