垃圾值与åŽæœŸå¢žé‡

时间:2012-06-07 21:16:12

标签: c

问题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

3 个答案:

答案 0 :(得分:2)

  1. x的值是 indeterminate ,å¯èƒ½æ˜¯é™·é˜±è¡¨ç¤ºï¼Œåœ¨è¿™ç§æƒ…况下x++的行为未定义。

  2. 表达å¼i++ 将计算为当å‰å€¼i;作为副作用,i中的值会递增。因此,如果i == 1,则表达å¼i++将评估为1,并且副作用i将设置为2.

  3. Chapter and verse:

    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语å¥å°†æ‰“å°â€œå½“å‰ï¼Œæ–°çš„“价值。