umaru23333 发表于 2020-11-13 15:13:40

求解释答案

我的答案是15,22,8,8
是怎么来的?求大佬解答
int main(void)
{
        int i=5,j=5,p,q;
        p=(i++)+(i++)+(i++);
        q=(++j)+(++j)+(++j);
        printf("%d,%d,%d,%d\n",p,q,i,j);
}

风过无痕1989 发表于 2020-11-13 15:29:07

怎么又发一次?


对于 i ,是运算,后自增,对于 j ,是先自增,后运算;

p = (i++)+(i++)+(i++)
= 5 + 5 + 5
= 15
运算完成后,i 经过三次自增,变为 8;

q = (++j)+(++j)+(++j)
= 8 + 8 + 8
= 24
运算前,j 经过三次自增,变为 8;

umaru23333 发表于 2020-11-13 15:38:56

风过无痕1989 发表于 2020-11-13 15:29
怎么又发一次?




感谢回答,我的第二个答案是22,不是24呀

风过无痕1989 发表于 2020-11-13 17:41:39

umaru23333 发表于 2020-11-13 15:38
感谢回答,我的第二个答案是22,不是24呀

22是错误的,不信你运行一下程序,就知道是 24,而不是 22 了
页: [1]
查看完整版本: 求解释答案