You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数更新变量是否算有返回值?编程返回值概念疑问解答请求

关于编程中「返回值」的概念澄清

首先纠正一个常见误解:printf是有返回值的,它的返回值是成功打印到输出流的字符总数(如果出错则返回负数)。你可能混淆了“无返回值函数”(比如C里的void类型函数)和printf这类有返回值但常被忽略的函数。

下面逐个解答你的疑问:

1. 什么是返回值?

返回值是函数执行完成后,通过return语句(或语言底层机制)传递给调用者的一个确定值。这个值是函数调用表达式本身的结果,比如你可以写:

int print_count = printf("Hello"); // print_count会被赋值为5,因为"Hello"是5个字符

只有这种能被赋值、参与运算的,才是函数的返回值。

2. 关于a-b的计算

你代码里的a-b是在调用printf之前就被求值的参数,不是printf的返回值。函数调用时,所有实参都会先被计算出来,再传递给函数。这个计算结果只是传给printf用来打印,和返回值完全是两回事。

3. a++的问题

a++同样是参数求值的一部分,它的作用是先返回a当前的值作为参数,再把a的值加1(这是副作用)。这个过程和printf的返回值无关,printf不会把a++的结果“返回给主程序”——主程序里a的值变化是因为a++这个表达式的副作用,不是printf的返回值导致的。

总结

  • 返回值是函数执行完后,专门传递给调用者的、可以被调用者使用的值(能赋值、参与运算)。
  • 函数参数的求值过程、参数带来的副作用,都和返回值不是一个概念。
  • void类型的函数才是真正没有返回值的,调用这类函数的表达式不能被赋值或参与运算。

内容的提问来源于stack exchange,提问作者20centuryboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:36:24