这题求解
#include<stdio.h>int fun(int x, int y)
{ return (x+y); }
main( )
{
int a=2,b=2,c=3,sum;
sum=fun(fun((++a,++b),a+b),a++);
printf("%d\n",sum);
}
运算过程是怎么样的? 结果10怎么出来的? sum=fun(fun((++a,++b),a+b),a++)
从右向左计算
sum=fun(fun((++a,++b),a+b),2),此时a为3
sum=fun(fun((++a,++b),5),2)
sum=fun(fun((4,3),5),2)
sum=fun(fun(3,5),2)
sum=fun(8,2)
sum=10 学会了,可能考试多得几分,但不帮助面试
学不会,可能考试少得几分,但不影响面试 sunrise085 发表于 2020-6-2 23:45
sum=fun(fun((++a,++b),a+b),a++)
从右向左计算
sum=fun(fun((++a,++b),a+b),2),此时a为3
666 sunrise085 发表于 2020-6-2 23:45
sum=fun(fun((++a,++b),a+b),a++)
从右向左计算
sum=fun(fun((++a,++b),a+b),2),此时a为3
为什么到4步4不见了 L.G.明 发表于 2020-6-3 09:15
为什么到4步4不见了
因为那里有小括号,(4,3)的结果就是3。并列语句的结果是最右侧的结果。例如:int a=(0,3+4,5*8)得到的a值是40 我觉得你少写了个fun。fun(++a,++b)和(++a,++b)结果不一样。前者是函数,后者取最后一个值作为结果。
页:
[1]