zhengyihao1 发表于 2018-3-25 20:39:47

C例题求解

谢谢 !{:5_107:}

ba21 发表于 2018-3-25 21:00:57

1,++在后,说明结果在下一条语句生效
2,++在前,本次马上生效
3,(++j)+(++j)+(++j)运算优先级 其实是 ((++j)+(++j))+(++j)7+7+8

Zmynx_2017 发表于 2018-3-25 21:16:50

你这个代码在不同的编译环境可能会出现不同的结果,但是无非就是优先级的问题

至于i++ 和 ++i ,一个先运算后自加,一个先自加后运算,但是由于不同编译器有些

结果可能是15 ,24 ,8 , 8 所以你理解了就可以了,不需要过分纠结

我特意给你加了一行,代码,你可以对比一下,理解

#include <stdio.h>
int main()
{
        int i=5,j=5,k=5,p,q,r;
        p=(i++)+(i++)+(i++); // p = 5 + 6 + 7 执行后 i = 8
        r = (++k)+(++k);printf("%d\n",r); //特意给你加了一行,你可以对比一下这个
        q=(++j)+(++j)+(++j); // q = 7 + 7 +8 执行后 j = 8
        printf("%d,%d,%d,%d",p,q,i,j);
        return 0;
}

zhengyihao1 发表于 2018-3-26 10:09:52

ba21 发表于 2018-3-25 21:00
1,++在后,说明结果在下一条语句生效
2,++在前,本次马上生效
3,(++j)+(++j)+(++j)运算优先级 其实 ...

((++j)+(++j))+(++j)这是为啥啊- -为啥前两个要用括号括起来

zhengyihao1 发表于 2018-3-26 10:11:01

Zmynx_2017 发表于 2018-3-25 21:16
你这个代码在不同的编译环境可能会出现不同的结果,但是无非就是优先级的问题

至于i++ 和 ++i ,一个先 ...

((++j)+(++j))+(++j)那为啥变成这个了啊为啥括起来前两个啊 - -

Zmynx_2017 发表于 2018-3-26 10:42:21

zhengyihao1 发表于 2018-3-26 10:11
((++j)+(++j))+(++j)那为啥变成这个了啊为啥括起来前两个啊 - -

你是用的编译器就是这么干的,没有为什么,你只需要知道它是这么干,大概了解就可以了,

并且,这样的问题感觉就是考试可能会考,而且得限制编译环境,实际谁疯了吗?要这样写代码?
页: [1]
查看完整版本: C例题求解