在C中,如何在一个参数中测试与“|”结合的几个标志之一?

在C中,如何在一个参数中测试与“|”结合的几个标志之一?,第1张

概述我有下一个代码: 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 passe 我有下一个代码:

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中,如何在一个参数中测试与“|”结合的几个标志之一?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220852.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存