一个C语言问题,关于j++与++j

[复制链接]
2912|4
 楼主| le062 发表于 2010-9-12 21:12 | 显示全部楼层 |阅读模式
  1. #include<stdio.h>
  2. void fun(int a[],int b[],int *x)
  3. { int i,j=0;
  4. for(i=0;a[i];i++)
  5. {if(i%2==0)continue;
  6. if(a[i]>10)
  7. b[j++]=a[i];             /*这儿是先j++还是先b[j]=a[i],由答案看是先后者*/
  8. }
  9. *x=j;
  10. }
  11. void main()
  12. {int a[10]={3,15,32,23,11,4,5,9},b[10];
  13. int i=0,x=0;
  14. fun(a,b,&x);
  15. for(i=0;i<x;i++)
  16. printf("%d\t",b[i]);
  17. printf("\n%d",x);
  18. }

输出是
15 23
2


是不是j++优先级小  
我换成++j 输出就变成  
-858993460    15
2
logiccat 发表于 2010-9-12 21:26 | 显示全部楼层
++做后缀,则先使用j,然后j再+1;++做前缀,则j先+1,再使用j
运算符就是这么规定的,不是优先级的事情
NE5532 发表于 2010-9-12 21:41 | 显示全部楼层
1.应该去搞清楚。
2.实在搞不清楚就分开写。
byeyear 发表于 2010-9-13 16:13 | 显示全部楼层
不管前置++还是后置++都是先加再用
区别在于用加以前的值还是加以后的值

试试下面这个式子:
i = i++;
这个式子整明白了对++的理解也就差不多了
 楼主| le062 发表于 2010-9-14 11:45 | 显示全部楼层
4# byeyear
  1. #include<stdio.h>
  2. main()
  3. {int a,i=1,j=1;
  4. a=j++;
  5. i=i++;
  6. printf("%d\n%d\n",a,i);      
  7. }


多谢大家,上面这个例子a=1 i=2 理解了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

435

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部