首页 > 用户发贴区 > 编程问题提问区 > 关于C运算符的问题
2010
06-07

鄙人系C初学者。现自学中遇见一系列问题,万望各位大侠莫耻笑。多赐教!!!


先谢了!!!!Tongue
 

关于增1,减1运算符即“++”,“–”。

书上说“++”,“–”他们的结合性是“自右向左”

我没能理解这个所谓“自右向左”结合性是什么意思?

例:

main()

{

        int a,b,c,x;


        a=b=c=2;

        x=a+++b+++c;              /*我理解的所谓“自右向左”结合性,那么“x=a+(++b)+(++c)”*/

        printf(“x=%d\n”,x);       /*如果按照上面的分析输出应该是:“x=8 ”很明显我错了!但这是为什么呢?*/

        getch();

}

输出:

x=6

我知道编译器是这样分解的:x=(a++)+(b++)+c

但是这样一来,就让我很纳闷了。

什么是“自右向左”结合性呢?

求解!望大侠不吝赐教!!!!

 

2010年6月7日21:01:25

等待解答……

 

2010年6月10日0:09:26

等待解答…………
李晓军2010-06-10 00:09:51


关于C运算符的问题》有 1 条评论

  1. lucyqixi 说:

    你看的书是什么名字?作者是谁?

    结合性是屈从与运算符的优先级的,对操作数计算的时候根据符号优先级来确定可操作的左值还是右值。
    ++(后缀),–(后缀)优先级大于++(前缀),–(前缀),前者的结合性是从左到右,后者是从右到左。
    另,x的值并不确定。左值右值的求值顺序是留给编译器自己实现的。可参考编译原理。

留下一个回复