首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于return ( count ),count= 0;

关于return ( count ),count= 0;
EN

Stack Overflow用户
提问于 2021-02-25 10:11:15
回答 3查看 203关注 0票数 -4

所以在

代码语言:javascript
运行
复制
#include 

int main(int argc , char *argv[])
{
    int n;
    n = _strlen_recursion("Corbin Coleman");
    printf("%d\n", n);
}
int _strlen_recursion(char *s)
{
   static int count = 0;    
   count++;  
   return (count), count = 0;
}

逗号运算符有效的位置

0可以在屏幕上看到。为什么?

所以真正的问题是:return()重载,如上所述sizeof是吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-25 11:33:53

return并不类似于sizeof..。的操作数sizeof

是括号中的类型或表达式。

Areturn语句只有一个表达式(或没有)。括号不是return语句语法的一部分。括号可能只出现在表达式中,因为它们是表达式的一部分。

return (count), count = 0;,表达式为

(count), count = 0..。这是一个逗号表达式。它评估

(count),则丢弃结果值,然后计算count = 0..。它的值是赋值的,0,所以这是逗号表达式的值,所以返回0。

票数 2
EN

Stack Overflow用户

发布于 2021-02-25 10:15:47

在返回statement](https://en.cppreference.com/w/cpp/language/return) [

return (count), count = 0;

attr(可选)返回表达式(可选);(1)

表达式为(count), count = 0,as逗号operator](https://en.cppreference.com/w/cpp/language/operator_other#Built-in_comma_operator) [,第一个操作数(count)被计算并丢弃结果,则第二个操作数count = 0的值,则其值作为omma运算符的返回值返回,并作为_strlen_recursion()晚点再说。

票数 2
EN

Stack Overflow用户

发布于 2021-02-25 10:16:04

逗号在C中的作用与二元运算符相同+-&,C中的所有其他运算符都是这样做的。它接受两个操作数并充当序列点。左操作数,(count)在您的示例中,将计算结果,然后丢弃结果。从这里开始,右边的操作数,count = 0,并返回其返回值。在您的示例中,左操作数没有副作用,因此它基本上是无用的。这条线return (count), count = 0;相当于这两行

代码语言:javascript
运行
复制
(void) (count);
return count = 0;

请注意count = 0是一个赋值,在C中,赋值返回赋值的值,所以在本例中,这个表达式返回0,最终返回函数。

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

https://stackoverflow.com/questions/66361430

复制
相关文章

相似问题

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