黑马程序员技术交流社区

标题: 求教自增运算符优先级问题 [打印本页]

作者: ajd_jordan    时间: 2014-6-20 03:45
标题: 求教自增运算符优先级问题
  1. int a = 2;
  2. int result = a / ++a;
  3. printf("result = %d\n", result);
复制代码


我的分析思路是:自增运算符++的优先级是比乘除高的,那么先计算++a,结果是3,a也变为3,然后再计算除法,a / ++a = 3 / 3 = 1,但是程序运行结果是0,没搞懂是为什么。
而且第二行有警告信息:unsequenced modification and access to 'a',这是什么意思?

第一次发帖,求大神指教,谢谢~
作者: 443201683@qq.co    时间: 2014-7-16 22:51
编译器问题,像g++是从右向左编译的,vc是从左向右的~~所以你这个在vc和g++下面可能会有不同结果
又例如下面这个例子
  1. int t;

  2. char buf[]={"abc"};

  3. for(t=0;buf[t]!='\0';t++)

  4.     printf("%d ",buf[t]);

  5. printf("\n");

  6. t=0;

  7. printf("%d %d %d",buf[t],buf[++t],buf[++t]);
复制代码


往往不能得到理想的结果
作者: sfm    时间: 2014-11-10 10:54
这个优先级的问题不需要去强制的记忆,老是说这个不会的时候可以百度,以后时间长了就OK了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2