黑马程序员技术交流社区
标题:
求教自增运算符优先级问题
[打印本页]
作者:
ajd_jordan
时间:
2014-6-20 03:45
标题:
求教自增运算符优先级问题
int a = 2;
int result = a / ++a;
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++下面可能会有不同结果
又例如下面这个例子
int t;
char buf[]={"abc"};
for(t=0;buf[t]!='\0';t++)
printf("%d ",buf[t]);
printf("\n");
t=0;
printf("%d %d %d",buf[t],buf[++t],buf[++t]);
复制代码
往往不能得到理想的结果
作者:
sfm
时间:
2014-11-10 10:54
这个优先级的问题不需要去强制的记忆,老是说这个不会的时候可以百度,以后时间长了就OK了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2