首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个C++功能的名称是什么?

这个C++功能的名称是什么?
EN

Stack Overflow用户
提问于 2014-11-18 10:12:29
回答 3查看 6.4K关注 0票数 82

我编写了一些C++代码,错误地省略了函数WSASocket的名称。但是,我的编译器没有引发错误,并将我的SOCKET与整数值1相关联,而不是一个有效的套接字。

有关代码应该如下所示:

代码语言:javascript
复制
this->listener = WSASocket(address->ai_family, address->ai_socktype, address->ai_protocol, NULL, NULL, WSA_FLAG_OVERLAPPED);

相反,它看起来是这样的:

代码语言:javascript
复制
this->listener = (address->ai_family, address->ai_socktype, address->ai_protocol, NULL, NULL, WSA_FLAG_OVERLAPPED);

来自其他语言,这看起来可能是某种匿名类型。这个特性的名称是什么,如果它真的是一个特性的话?

它的目的是什么?

当你不知道从哪里开始的时候,寻找它是很困难的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-18 10:15:50

逗号运算符†计算左手边,丢弃它的值,从而产生右手边。WSA_FLAG_OVERLAPPED为1,这是表达式的结果;所有其他值都被丢弃。从来没有创建过套接字。

†,除非超载。是的,它可以超载。不,你不应该让它超载。离键盘远点,马上!

票数 151
EN

Stack Overflow用户

发布于 2014-11-18 10:15:43

逗号运算符正在理解您的代码。

您正在有效地设置this->listener = WSA_FLAG_OVERLAPPED;,它恰好是同步有效的。

票数 22
EN

Stack Overflow用户

发布于 2014-11-18 10:15:38

编译器依次在括号内计算每个sequence point,结果是表达式中的WSA_FLAG_OVERLAPPED

逗号运算符,是C++中的序列点。对逗号左边的表达式进行完全计算,然后对右侧表达式进行计算。结果总是右边的值。当得到表单的表达式(x1、x2、x3、.、xn)时,表达式的结果总是xn

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26991685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档