平淡最真 发表于 2018-3-19 08:34:09

关于‘,’运算符与自加的问题

请教:
# include <stdio.h>

int main(void)
{
        int a,b;
        a = (b=2, ++b, b+5);
        printf("The value of a is:%d\n", a);
}
这段程序输出的结果是 8


# include <stdio.h>

int main(void)
{
        int a,b;
        a = (b=2, b++, b+5);
        printf("The value of a is:%d\n", a);
}

但是为什么这段程序输出的也是8

第一段程序是因为在a = (b=2, ++b, b+5)内执行了 ++b,先把b的值加1在引用,所以结果为8;但是第二段程序中a = (b=2, b++, b+5) 不是先引用b的值吗,引用完后就应该是 2+5=7了啊????????

BngThea 发表于 2018-3-19 08:58:23

后置++不等于执行完一条语句后最后自增
而是下一个需要要到自身之前就必须完成
你第三个b+5用到了b,所以已经完成自增操作了

平淡最真 发表于 2018-3-19 09:25:59

BngThea 发表于 2018-3-19 08:58
后置++不等于执行完一条语句后最后自增
而是下一个需要要到自身之前就必须完成
你第三个b+5用到了b,所以 ...

您好我还是不明白,不能理解您说的话

我是不是可以这样理解您说的话:
    这里的先引用b的值是先引用的前面的b=2,然后还要执行++的操作,才可以执行后面的b+5

BngThea 发表于 2018-3-19 09:50:06

平淡最真 发表于 2018-3-19 09:25
您好我还是不明白,不能理解您说的话

我是不是可以这样理解您说的话:


我是说执行过程如下:
b=2;
b+=1;
a = b+5

ba21 发表于 2018-3-19 11:10:44


平淡最真 发表于 2018-3-19 13:39:30

BngThea 发表于 2018-3-19 09:50
我是说执行过程如下:
b=2;
b+=1;


谢谢您麻烦了{:5_109:}

平淡最真 发表于 2018-3-19 13:40:17

ba21 发表于 2018-3-19 11:10


很详细辛苦您了 谢谢{:5_109:}
页: [1]
查看完整版本: 关于‘,’运算符与自加的问题