问题1
int x;
if (x++)
{
printf ("\nASCII value of X is smaller than that of x");
}
æ¤å¤„为x
分é…了垃圾值??
问题2:
main ()
{
int i;
for (i = 0; i++ < 10;)
{
printf ("%d\n", i);
}
}
任何人都å¯ä»¥è§£é‡Ši++ < 10
是如何工作的å—?我的æ„æ€æ˜¯å®ƒåº”该以9为æ¢ç»“æŸ10
ç”案 0 :(得分:2)
x
的值是 indeterminate ,å¯èƒ½æ˜¯é™·é˜±è¡¨ç¤ºï¼Œåœ¨è¿™ç§æƒ…况下x++
的行为未定义。
表达å¼i++
将计算为当å‰å€¼i
;作为副作用,i
ä¸çš„å€¼ä¼šé€’å¢žã€‚å› æ¤ï¼Œå¦‚æžœi
== 1,则表达å¼i++
将评估为1,并且副作用i
将设置为2.
6.5.2.4 post fi x递增和递å‡è¿ç®—符
...
2 post fi x++
è¿ç®—符的结果是æ“作数的值。 结果是 获得åŽï¼Œæ“作数的值递增。 (å³ï¼Œé€‚当的值1 ç±»åž‹è¢«æ·»åŠ åˆ°å®ƒã€‚ï¼‰å‚è§åŠ 法è¿ç®—符和å¤åˆèµ‹å€¼çš„讨论 有关约æŸï¼Œç±»åž‹å’Œè½¬æ¢ä»¥åŠæ“作的影å“çš„ä¿¡æ¯ æŒ‡é’ˆã€‚æ›´æ–°æ“作数的å˜å‚¨å€¼çš„副作用应å‘生在 å‰ä¸€ä¸ªå’Œä¸‹ä¸€ä¸ªåºåˆ—点。
强调我的。
ç”案 1 :(得分:1)
问题1:是
问题2:是的。如果它å°äºŽ10ï¼Œåˆ™å¢žåŠ 1然åŽè¿›è¡Œæ¯”较。
ç”案 2 :(得分:1)
在第一个问题ä¸ï¼Œæ‚¨å£°æ˜Žx
int x;
ä½†æ˜¯ä½ æ²¡æœ‰åˆ†é…它,这会ä¿ç•™ä¸€äº›å†…å˜æ¥ä¿å˜x的值,但ä¸ä¼šå°†å…¶åˆå§‹åŒ–为已知值。那是一件éžå¸¸ç³Ÿç³•çš„事情。然åŽä½ è¯»å®ƒï¼Œå¢žåŠ å®ƒï¼Œå¹¶å¯èƒ½åšä¸€äº›äº‹æƒ…。
if ( x++ ) {
printf ( "\nascii value of X is smaller than that of x" ) ;
}
ç”±äºŽä½ åœ¨é˜…è¯»å®ƒä¹‹å‰ä¸çŸ¥é“å®ƒçš„ä»·å€¼æ˜¯ä»€ä¹ˆï¼Œå› æ¤ä¸å¯èƒ½å¯¹ä½ çš„ifè¯å¥æ˜¯å¦ä¼šæ‰“å°ä»»ä½•å†…容åšå‡ºæœ‰æ ¹æ®çš„猜测。
åœ¨ä½ çš„ç¬¬äºŒä¸ªé—®é¢˜ä¸ï¼ˆæ¯ä¸ªé—®é¢˜è¯·ä¸€ä¸ªé—®é¢˜ï¼‰ï¼Œä½ 读å–i的值,然åŽé€’增它,然åŽå¯¹è¯»å–值进行比较。åŽå¢žé‡åŸºæœ¬ä¸Šæ„味ç€â€œåœ¨æˆ‘读å–它之åŽé€’增值â€ï¼Œå› æ¤å°†å˜å‚¨æ–°å€¼ï¼Œç„¶åŽå¯¹æ—§å€¼è¿›è¡Œæ¯”较,并且下é¢çš„printfè¯å¥å°†æ‰“å°â€œå½“å‰ï¼Œæ–°çš„“价值。