y=7/3=2
y*=4+2/3=2*(4+0)=8
z=(x++)*(--y)=1*7=7
此时x=2; y=7
printf("%d\n",(x,z))逗号运算,结果是z的值
于是输出7
这个程序的输出结果是9。
这个程序相当于下面的程序,省略掉③和④一对花括号:
程序分析
③句和④不会被执行,所以,z的值是9。
判断③和④隐含一个花括号的方法是,else与最近的if语句配对。
有什么问题请留言。
本程序输出的结果是:a = ‘A’, b = 'b'。
也就是说实参b的值加了1,而a的值则没变,为什么呢?
首先,我们说一下b的值为什么会加1:在函数fun中的第一个形参是一个指针变量,fun(&b,a)中&b的意思是取b的地址,而*c在这里其实就是b的值,这里的*c = *c+1是对b的值直接进行 *** 作的,因此,b的值会变。
而a的值不变,是因为在C语言中,实参向形参的数据传递方向是单向传递,也就是说,只由实参传给形参,而不能由形参传回给实参。除非我们加个返回值,如
int fun(char *c, int d) //带返回值得函数{
*c = *c+1
d = d + 1
return d //将加1后的d值返回
}
void main()
{
char a='A',b='a'
a = fun(&b,a) //将返回的值赋给a
printf("%c,%c\n",a,b)
}
这个程序关系到C语言的两个内容,1、指针 2、函数的参数和函数的值 ,建议找一本C语言程序设计的书阅读这两个章节,一切都迎刃而解。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)