X 我知道了TIPS:左右滑动导航栏可以查看更多栏目
#include <stdio.h>main(){
>> 本文固定链接: http://www.vcgood.com/archives/3277
>> 转载请注明: dragonlys 2009年09月13日 于 C语言帝国 发表
函数把要传递的参数从后向前依次入栈,也就是从右向左依次计算。
运算printf(“%d,%d”,++i,i++);时先算i++,要输出 i 的值即0,然后再++即1,最后再计算++i,先++即2,要输出 i 的值即2。
请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如 printf(“%d,%d,%d”,a,b,c);中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。
如果改写为 printf(“%d,%d,%d”,(a,b,c),b,c);则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。
whos2009-09-13 13:40:17
很详细呀
这种问题和 a=b+++b的问题一样没有什么可以研究的。这个世界还有很多更有意义的事情去做。如果面试的时候碰到这种问题,那么就暗暗鄙视一下面试官!
运行结果是1,0吧
你必须先 登录才能发表评论。
函数把要传递的参数从后向前依次入栈,也就是从右向左依次计算。
运算printf(“%d,%d”,++i,i++);时先算i++,要输出 i 的值即0,然后再++即1,最后再计算++i,先++即2,要输出 i 的值即2。
请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如 printf(“%d,%d,%d”,a,b,c);中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。
如果改写为 printf(“%d,%d,%d”,(a,b,c),b,c);则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。
很详细呀
这种问题和 a=b+++b的问题一样没有什么可以研究的。这个世界还有很多更有意义的事情去做。如果面试的时候碰到这种问题,那么就暗暗鄙视一下面试官!
运行结果是1,0吧