C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在C中,如何在一个参数中测试与“|”结合的几个标志之一?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个代码

int main()
{
 OwnSelect(23,FD_READ | FD_WRITE); // <---- Several arguments as one
 return 0;
}

int OwnSelect(SOCKET s,long lNetworkEvents)
{
 // How can i check that FD_READ has been passed?
 if(lNetworkEvents == FD_READ)
 {
  // never here
 }
 return 0;
}

如果已经使用FD_READ传递了另一个FD,我如何检查FD_READ是否已通过.
谢谢!

解决方法

好像你在这里错过了一些基本的位操作.您正在对FD_READ和FD_WRITE(| =按位OR)执行OR运算,从而将两个值指示的位设置为参数.要检查是否已传递FD_READ,您需要使用FD_READ AND lNetworkEvents并检查结果是否等于FD_READ,如下所示:

    if(FD_READ ==(lNetworkEvents& FD_READ)){…}

这当然假设FD_READ和FD_WRITE是意图以这种方式使用的值(即,通常不具有重叠位).

编辑:修复,wabepper绝对正确:)哎呀!

大佬总结

以上是大佬教程为你收集整理的在C中,如何在一个参数中测试与“|”结合的几个标志之一?全部内容,希望文章能够帮你解决在C中,如何在一个参数中测试与“|”结合的几个标志之一?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: