要理解这个请先自行查阅“逗号表达式老敏”,这里做简单解释和copy:
c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14;a=(a=3*5,a*4)的值是60,其中(a=3*5,a*4)的值是60,裂燃 a的值在逗号表达式里一直是15,最后被逗号表达式赋值为60,a的值最终为60。
你这里的情况就相当于先得侍源枝到a=15,(15,a*4,a+10)
然后得到(15,60,a+10)
最后得到(15,60,25)
输出的却是25
仅供参考,如有错误请各路网友及时反馈
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息,printf()函数的拍手调用格式为:
printf("<格式化字符串>铅好", <参量表>)
这里面的格式化字符串"%x"表示无符号以十六进制表示的整数,
这里的参量是a(袭激嫌=18),18用十六进制表示是12,所以输出应该是12
一开始,s被赋值,为运梁枣2接着3次循环,
第一次,i= 0,%2求余为0做了else t= 5,a= 5,返回值8 (因为在内部调用,到了外面还是用a=3)
第二次,i= 1,a= 4,t= 4返回值8(外部a因前一次a++,所以为4)
第三次i= 2,a= 6,t= 6,返回值11(外部a因前一次a++,所以为旁拆5)[ 同理第一次使用else的时候a++了,所以不是5而是6了 ]
把三次返回值加起来,就是所渣橘输出s 29= 8+8+11+2
注意static的用法,区分局部和全局~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)