main()
{ int i=3,c;
{c=i++;c+=++i;c+=i++;}
printf("%d\n%d\n",c,i);
}
----------------解决方案--------------------------------------------------------
刚刚调试了一下啊!是12!
----------------解决方案--------------------------------------------------------
有没有认为是4+4+4的?
----------------解决方案--------------------------------------------------------
I think is 4+4+4
----------------解决方案--------------------------------------------------------
我对这种问题的一贯解决办法就是:
把它分解为
++i;
c=i+i+i;
i++;i++;
就是说在解决运算语句中的++问题时都是先把所有的 ++i 这样的运算都提到所在语句之前独立成语句
把所有i++这样的运算都降到下一语句独立成语句!
例如:
把这个程序改一下之后
main()
{ int i=3,c;
c=(i++)+(++i)+(i++)+(i++)+(++i)+(i++);
printf("%d",c);
getch();
}
它的运行结果是 30
用这种方法解释很通
百试不爽
至于为什么我一直没多想过
有点不负责
但是实在不想多在这个问题滞留
当然这种做法应该批评
呵呵
----------------解决方案--------------------------------------------------------
我对这种问题的一贯解决办法就是:
把它分解为
++i;
c=i+i+i;
i++;i++;
就是说在解决运算语句中的++问题时都是先把所有的 ++i 这样的运算都提到所在语句之前独立成语句
把所有i++这样的运算都降到下一语句独立成语句!
例如:
把这个程序改一下之后
main()
{ int i=3,c;
c=(i++)+(++i)+(i++)+(i++)+(++i)+(i++);
printf("%d",c);
getch();
}
它的运行结果是 30
用这种方法解释很通
百试不爽
至于为什么我一直没多想过
有点不负责
但是实在不想多在这个问题滞留
当然这种做法应该批评
呵呵
这是编译器问题吧,你这算法不是什么编译器都行的,VC里面是26。
----------------解决方案--------------------------------------------------------
同意楼上说的。
这样的问题也只有无聊的试卷上才有,谁编程会写这样的语句
----------------解决方案--------------------------------------------------------
15楼的 你能给出用这样的方法来做的原因吗 你说是一贯可不可以有一定的参照依据
----------------解决方案--------------------------------------------------------
3+4+3+2,不知道对不对.i最后取值=6
首先取第一个i取3,第二个i取3+1=4,第三个i取3,然后运算3+4+3,运算完后加上第一个和第三个i增值的1,两次增值故为2,所以结果为3+4+3+2.
我出学+自学,不知道对不对,就算是胡扯吧,有理大家就听,没理大家也让这点我,哈哈,谢谢大家了.
----------------解决方案--------------------------------------------------------
void main(){
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
这个程序中,对P=(i++)+(i++)+(i++)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q 的值则不然,q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8。
----------------解决方案--------------------------------------------------------