+ -
当前位置:首页 → 问答吧 → 结果分析

结果分析

时间:2011-12-14

来源:互联网

复制内容到剪贴板
代码:
#include"iostream"
using namespace std;
#define M(y) ((y)*(y))
int main()
{
  int i=1;
  while(i<6)
          cout<<M(I++)<<ENDL;
system("pause");
}
运行结果是   1 ,9,25        怎么不是  2 ,6,30
4 Y7 W+ F8 b2 B1 K: H- X
* P5 J: V' d4 x; D  f2 O[ 本帖最后由 月夜幻影 于 2011-12-14 21:52 编辑 ]

作者: goodhacker   发布时间: 2011-12-14

复制内容到剪贴板
代码:
        int i=1;
        while(i<6)
                cout<<M(i++)<<endl;
等效于
复制内容到剪贴板
代码:
        int i=1;
        while(i<6)//i=1;
                cout<<((i++)*(i++))<<endl;//i=1;前自增,返回自增前的值,并且该值结果因编译器而异
详见- c' z, E+ H% L& V
http://bbs.51cto.com/thread-892115-1.html

作者: 月夜幻影   发布时间: 2011-12-14

并且每次运行M(i++);i自增2次

作者: 月夜幻影   发布时间: 2011-12-14

参见这个常见错误,你应该就理解了9 V! i4 i& n3 m6 C
http://bbs.51cto.com/thread-881805-1.html
* ]8 B* w# ~+ ~1 T/ |1 I1 W
引用:
原帖由 goodhacker 于 2011-12-14 21:24 发表
. z% d  @0 }+ o2 \% Z#include"iostream"
0 R  T0 I, Y5 u1 y( kusing namespace std;
9 S- m$ w4 b$ |- A! X1 D#define M(y) ((y)*(y))
% X6 \7 L% @8 K. H9 S" nint main(); k* p2 J6 b, Z, H
{
5 W$ ?1 P- w+ ~4 }; A8 L. ?3 ]  int i=1;. j; `" g$ Q0 M9 h4 i
  while(i

作者: Bill_Hoo   发布时间: 2011-12-14