#include <stdio.h>
int main()
{
int i = 1, j = 1, k;
i = (i++) + (++i);
printf("i=%d \n", i);
k = (j++) + (++j);
printf("j=%d, k=%d\n", j, k);
}
执行结果:
i=5
j=3, k=4
请给出详细的说明 谢谢各位大虾了!
å¼å¼ï¼ç»äºæ³å°äº~
å
(i++) å°±æ¯å æåiçå¼æ¥ä½¿ç¨æåæèªå
(++i) å æi+1ç¶åè¿ä¸ªæ¶åi=2
é£ä¹i=2+2è½ç¶åé¢æ¯å æååºæ¥äºi ä½å®é 并没æèªå è¿ï¼ä¹æ以为2æ¯å 为(++i)èiå§ç»é½åªæ¯ä¸ä¸ªå å空é´éçå¼
æåi=4,è¿ä¸ªæ¶åè¿ç®å®äºï¼ç¶åæ§è¡æåç(i++) éçèªå ï¼iå°±çäº5
k = (j++) + (++j);
æ¯å 为k=4ä¹åï¼k没æèªå ï¼èªå çæ¯jæ以k=4;j=3;
è¿ä¸ªéçå°±è·
i=(i++)ä¸æ ·ï¼å èµå¼äºï¼ä¹åï¼æå»èªå ï¼æ以è¿éçi=2
k=(j++)åæ¯æjå¼èµå¼ä¹åï¼æèªå ~
ä¸ç¥éè¿æ ·è¯´è½å¬æäºä¸ï¼
æ»ä¹å°±æ¯i++è¿ç§ï¼æ¯èµå¼ä¹åæèªå çãè¿æ¯Cè·C++éç¼è¯ä¸çé®é¢å§
æåæ¶ç¨äºTC VC++6.0 VS2005é½æ¯è¿æ ·ï¼ç¨äºC#åJAVA没è¿ç°è±¡ã
å
(i++) å°±æ¯å æåiçå¼æ¥ä½¿ç¨æåæèªå
(++i) å æi+1ç¶åè¿ä¸ªæ¶åi=2
é£ä¹i=2+2è½ç¶åé¢æ¯å æååºæ¥äºi ä½å®é 并没æèªå è¿ï¼ä¹æ以为2æ¯å 为(++i)èiå§ç»é½åªæ¯ä¸ä¸ªå å空é´éçå¼
æåi=4,è¿ä¸ªæ¶åè¿ç®å®äºï¼ç¶åæ§è¡æåç(i++) éçèªå ï¼iå°±çäº5
k = (j++) + (++j);
æ¯å 为k=4ä¹åï¼k没æèªå ï¼èªå çæ¯jæ以k=4;j=3;
è¿ä¸ªéçå°±è·
i=(i++)ä¸æ ·ï¼å èµå¼äºï¼ä¹åï¼æå»èªå ï¼æ以è¿éçi=2
k=(j++)åæ¯æjå¼èµå¼ä¹åï¼æèªå ~
ä¸ç¥éè¿æ ·è¯´è½å¬æäºä¸ï¼
æ»ä¹å°±æ¯i++è¿ç§ï¼æ¯èµå¼ä¹åæèªå çãè¿æ¯Cè·C++éç¼è¯ä¸çé®é¢å§
æåæ¶ç¨äºTC VC++6.0 VS2005é½æ¯è¿æ ·ï¼ç¨äºC#åJAVA没è¿ç°è±¡ã
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-03-14
编译器不同,结果不同。实际程序中最好不要这样写,避免歧义