关于#c语言#的问题:函数调用


#include 
#include 

func(int a, int b)
{
    return a = a + b, a % b;
}
int main()
{
    int x = 9, y = 7, z = 3, rels;
    rels = func(func(x, y), z);
    printf("%d\n", 1 << rels);

请问第一次调用 func 是会返回 2吗?
然后第二次调用为 func( 2, 3) ,返回 2,赋值给rels
最后 1 左移两位输出 4

你分析的非常正确,稍微有点迷惑性的就是 func(int a, int b) 函数了,虽然没有显式的声明返回类型,但是编译器是可以通过的

会,=操作符优先级高于逗号运算符,逗号表达式的结果是最右侧表达式的结果
函数前面没写返回类型啊

是的