黑马程序员技术交流社区
标题: 关于函数调用问题 [打印本页]
作者: 李永方 时间: 2015-6-5 21:42
标题: 关于函数调用问题
在学习C语言中“函数调用问题”时,本应该写成“int m=max(max(56, 238),120));",因马虎,写成”int m=max((56,238),120);”,但是仍然能够执行,这是为什么呢?
代码如下
#include <stdio.h>
int max(int x,int y){
return x>y?x:y;
}
int main(int argc, const char * argv[]) {
int m=max((56, 238),120);//此处
printf("m=%d",m);
return 0;
}
执行结果为:m=238;
请教下各位大神,为什么仍可执行,而且结果正确啊?
作者: 七尺阳光 时间: 2015-6-5 21:59
函数值传递应该是把(56, 238)传输给X,相当于逗号表达式,取后面的值238给了X.是不是你可以把56和238换一下就知道了
作者: yi95392 时间: 2015-6-5 22:45
楼上大神正解啊
作者: 余丽丽 时间: 2015-6-5 23:20
逗号表达式的求值:从左到右对逗号连接的每一个表达式进行求值,并且将最右边的一个表达式的值作为整个逗号表达式的值
作者: 李永方 时间: 2015-6-5 23:21
果然,非常感谢!!
作者: jx836202365 时间: 2015-6-5 23:31
都学到函数调用了。。。
作者: 晗修 时间: 2015-6-6 00:39
逗号表达式也是有值的
作者: taolove 时间: 2015-6-6 01:24
逗号表达式吗?(56,238)取238后面这个值
作者: fixer 时间: 2015-6-6 06:01
括号里也是一个表达式,叫逗号表达式,也是有返回值的,所有可以运行
作者: 李永方 时间: 2015-6-6 07:18
很详细,感谢
作者: 李永方 时间: 2015-6-6 07:20
哈哈,是的哦
作者: 七尺阳光 时间: 2015-6-6 23:21
不客气,大家共同进步
作者: ⒈苆都s.兲憶 时间: 2015-6-6 23:24
只是相当于把整个括号内的东西传递给int x,然后回返回一个最大值!
作者: 恩赐_RWQqZ 时间: 2015-6-6 23:51
嗯 大神正解
作者: 天下1083 时间: 2015-6-7 08:07
来晚了,别人都正解完了:)
作者: chensc 时间: 2015-6-7 15:59
学习学习!
作者: 白0702 时间: 2015-6-8 16:48
围观学习一下,确实是逗号表达式的原因。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |