pypsrand 发表于 2018-2-7 19:51:24

求助一个c基础问题,来自小鱼老师的扩展阅读

#include <stdio.h>

int main()
{
      int a = 5;

      ++(a++);

      return 0;
}

小鱼老师在lvalue扩展阅读里指出这个会报错,试过确实报错了,但++(a++),为什么是++(5),而不是++(6),不是很理解,望知晓的朋友指点,谢谢啦~

BngThea 发表于 2018-2-7 20:19:33

因为后置++就是先取值再自增

风过无痕丶 发表于 2018-2-7 21:24:59

{:10_245:}我觉得初学 不要去较劲 ++i 或者 i++    尽量规避他们之间的区别, 他们的目的都是一样的 就是 i = i + 1, 只是执行生效的时间不同罢了~

Z皮皮 发表于 2018-2-7 21:42:26

a++是先进行运算,运算完之后再对a进行自加。
++a是先进行自加,自加完之后再进行其他的运算。
所以   当a=5 时++(a++)
先小括号中a++ 先运算后自加,所以括号里面还是5
该表达式的结果应该就是++5
我是这么理解的,不知道正不正确
还有不明白报错是为什么,
      

Z皮皮 发表于 2018-2-7 21:55:21

求楼主的编程软件

pypsrand 发表于 2018-2-7 23:18:15

BngThea 发表于 2018-2-7 20:19
因为后置++就是先取值再自增

谢谢解答,那就是尽管有小括号,但执行起来都是先取变量值,再运算a++?

pypsrand 发表于 2018-2-7 23:19:10

Z皮皮 发表于 2018-2-7 21:42
a++是先进行运算,运算完之后再对a进行自加。
++a是先进行自加,自加完之后再进行其他的运算。
所以      ...

报错应该是++运算符不能直接运用在费变量上,我是这样理解报错的

pypsrand 发表于 2018-2-7 23:20:56

Z皮皮 发表于 2018-2-7 21:55
求楼主的编程软件

Visual Studio Community 2017,个人学习用~

pypsrand 发表于 2018-2-7 23:22:59

风过无痕丶 发表于 2018-2-7 21:24
我觉得初学 不要去较劲 ++i 或者 i++    尽量规避他们之间的区别, 他们的目的都是一样的 就是 ...

嗯,谢谢{:10_281:},初学容易钻牛角尖,哈哈,想尽快了解背后运算的原理~

a98 发表于 2018-2-8 02:21:56

pypsrand 发表于 2018-2-7 23:18
谢谢解答,那就是尽管有小括号,但执行起来都是先取变量值,再运算a++?

不太懂诶

#include <stdio.h>

int main()
{
      int a = 5;
      ++a;
      return 0;
}

这个为什么不报错呢,++符不是也是直接运用在常量上吗。

a98 发表于 2018-2-8 02:23:48

pypsrand 发表于 2018-2-7 23:19
报错应该是++运算符不能直接运用在费变量上,我是这样理解报错的

回复错了。。

我想问一下这里。

#include <stdio.h>
int main()
{
      int a = 5;
      ++a;
      return 0;
}

这个为什么不报错呢,++符不是也是直接运用在常量上的吗。

BngThea 发表于 2018-2-8 07:53:00

pypsrand 发表于 2018-2-7 23:18
谢谢解答,那就是尽管有小括号,但执行起来都是先取变量值,再运算a++?

夯昊 发表于 2018-2-9 09:56:30

a98 发表于 2018-2-8 02:23
回复错了。。

我想问一下这里。


++a;是作用于变量,++5才是作用于常量,++(a++)这里小括号内返回的值是常量5,读取出来是++(5);所以报错,自增自减运算符不能作用于常量

a98 发表于 2018-2-9 10:45:00

BngThea 发表于 2018-2-8 07:53


哦哦明白了谢谢

a98 发表于 2018-2-9 10:45:36

夯昊 发表于 2018-2-9 09:56
++a;是作用于变量,++5才是作用于常量,++(a++)这里小括号内返回的值是常量5,读取出来是++(5);所 ...

嗯嗯.....明白了谢谢

Z皮皮 发表于 2018-2-9 18:12:07

pypsrand 发表于 2018-2-7 23:20
Visual Studio Community 2017,个人学习用~

多谢多谢
页: [1]
查看完整版本: 求助一个c基础问题,来自小鱼老师的扩展阅读