作者:给力的饼干_235 | 来源:互联网 | 2023-02-01 12:16
我想做以下事情:
r = recv(socket, buffer, bufsize, 0) && return r;
哪个不起作用,因为return -r;
它不是表达式.然而,
r = recv(socket, buffer, bufsize, 0) && printf("r=%d\n", r);
似乎工作.现在,除了语法简洁之外,还有很多东西可以从中获益但是我仍然很好奇是否有办法实现&& return r;
实际编译的功能?
编辑:如果不清楚,&&
当且仅当第一个非零时,才应执行后面的表达式.
1> 小智..:
当且仅当第一个非零时,才应执行&&之后的表达式.
这是你的问题:表达式没有被执行,它们被评估.声明已执行.
表达式可能会在评估期间发生副作用,但它们总是会评估某些值.正如您已经了解的那样,return
是一种陈述而不是一种表达.
所以,简而言之,不,没有办法让你想做什么.