1个回答
展开全部
结果应该是5,0。
你这个首先题目有错,"*a<*B"应该改成"*a<*b"。最后i是5,j是0,选项写反了。
运行方式:
fun函数中for循环的条件语句(*a<*b)||(getcgar()!='@'),这是一个或语句,
根据算法优化,当(*a<*b)成立的时候后面(getcgar()!='@')是不运行的!
所以只要*a<*b,循环就会一直执行,a指向地址的值(也就是i的值)不断++,b指向地址的值(也就是j的值)不断--,并且不会提示输入。
一直循环到*a<*b不成立,也就是当i变成3,j变成2的时候,开始检查条件语句getcgar(),
这时候输入ab@,就会再执行2次循环,最终变成5,0。
更多追问追答
追问
(*a)++;是怎么执行的,a=&i,那么*a就是1了,根据优先级,会先求*a,那么*a=1,这个表达式不就变成了1++吗,这不合语法,请问这怎么回事啊?
追答
(*a)++的意思是对a指向地址的值+1,是合法的。
++是赋值语句,等同于+=,也就是*a=*a+1;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询