printf() 是如何表达的?

How is printf() an expression?

我正在尝试学习价值类别,因为我遇到了一个错误并盯着看 this video by Copper Spice

他们继续定义一个表达式,并作为示例提供 printf() at this point in the video(下面的屏幕截图)。

printf() 是怎样的一个表达式?我一直认为函数调用自己编写时并不是真正的表达式。它们更像是我初学者认为的陈述。此外,他们提供的定义中提到 operatorsoperands,但是 none 可以用 printf 看到。我错过了什么?

提到的数据类型是 printf 的 return 值。 return 无效的函数呢?

How is printf() an expression?

这是一个函数调用表达式。

I always that that function calls aren't really an expression

函数调用是表达式。

They are more like statements

函数调用不是语句。考虑例如 ret = printf();。这里,函数调用是赋值表达式的子表达式。语句不能是子表达式 - 表达式可以是子表达式。

Moreover, the definition they provide mentions operators and operands but none can be seen with printf.

括号内是函数调用运算符。操作数是括号左侧的函数(后缀表达式)和括号内的参数列表。

How is the expression characterized by a data type?

每个表达式都有一个类型。类型以及值类别会影响表达式的使用方式。

I thought that the data type was related to the return type of the printf function

你猜对了。函数调用表达式的类型由函数的 return 类型决定。 printf() 的类型是 int.