正文

C++中的i++和++i的问题2007-05-25 13:49:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/otot/26132.html

分享到:

搞了半天区分不明白,现在总算知道一点了,记录下来。

main()  
  {  
                  int   i=1,k;  
                  k=i++;  
                  printf("k=%d,i=%d\n",k,i)   ;  
   
                  i=1;  
                  k=++i;  
                  printf("k=%d,i=%d\n",k,i)   ;  
                  i=1;  
                  i=i++   ;  
                  printf("i=%d\n",i)   ;  
                  i=1;  
                  i=++i;  
                  printf("i=%d\n",i)   ;  
                  i=1;  
                  printf("i++=%d\n",i++);  
                  i=1;  
                  printf("++i=%d\n",++i);  
                  i=1;  
                  printf("(i++)+(i++)=%d\n",(i++)+(i++));  
                  i=1;  
                  printf("(++i)+(++i)=%d\n",(++i)+(++i));  
                  getch();  
  }  
  结果:  
  k=1,i=2  
  k=2,i=2  
  i=2  
  i=2  
  i++=1  
  ++i=2  
  (i++)+(i++)=3  
  (++i)+(++i)=5  
   
  说明:  
  k=i++  
  k=i,i=i+1    
   
  而++i等价于k=(i=i+1)  
   
  在printf("i++=%d\n",i++);这种情况下i=i;  
      printf("i++=%d\n",++i);这中情况下temp=i+1,i=temp  
  printf("(i++)+(i++)=%d\n",(i++)+(i++));这中情况下temp1=i,temp2=i+1,i=temp1+temp2   
    
     temp在这里面是一个临时空间

其他的:

int i=3;
printf(“%d”,-i++);
(A)3 (B)4 (C)-3 (D)-4
分析:此题考查运算符的优先级,负号运算符和++运算符同优先级,而结合方向为“自左至右”,即-i++相当于-??i++??,所以先取出i的值3,输出-i的值-3,然后i增值为4,而不是i先增值为4,然后输出-4,所以答案选择C。

求1+2!+3!+...+20!的和
            main()
            {
            float n,s=0,t=1;
            for(n=1;n<=20;n++)
             {
             t*=n;   //t=t*n
             s+=t;   //s=s+t
             }
            printf("1+2!+3!...+20!=%e\n",s);
            }

阅读(5118) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册