永发信息网

帮忙解释一下a++的问题好吗··

答案:6  悬赏:80  手机版
解决时间 2021-05-18 00:26
  • 提问者网友:容嬷嬷拿针来
  • 2021-05-17 00:33

这三道题··理解不能

a=3

a++*++a

++a*a++

++a*++a

最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-05-17 01:47

学生没办法啊。只有学啊


a=3


a++*++a//3*4


++a*a++//4*4


++a*++a//4*5

全部回答
  • 1楼网友:第四晚心情
  • 2021-05-17 04:45

解释很简单,表达式求值,涉及到一个叫做序列点的概念,序列点是一个时间点。表达式真正做出运算是发生在这个序列点之后。

*(乘号)并不是序列点,表达求值的时候是到了;(分号)的时候才对整个表达式进行求值的,

也就是说,其实a++*++a;是要等到a变了两次之后才进行相乘运算的,也就是4*4=16

同理,其他的就是6*6=36

9*9=81;

当然,这和编译器的关系很大,如果你在BCB里面编写这段代码,结果就不是这样了,应为BCB里面规定的序列点和VC不同

  • 2楼网友:蓝房子
  • 2021-05-17 03:13

说白了 这样的问题 根据你自己用的编译器 不同得到的结果肯定不一样 说的 商业化点 就是 如果你的软件被别人改了 1/3后 那么他就没有办法追究你的版权了 所以商家很多改了VC6.0里面的核心代码 ! 有些int型的字节是2位 但是有些是 4个字节 你自己多去下载几个编译器来运行你这样的代码 结果肯定不同 ! 建议你不要去研究这样的问题了 你就以你的编译器的 标准就行了

  • 3楼网友:佘樂
  • 2021-05-17 02:38
同意上面的小熊的意见 这个问题没讨论的必要。 建议您不要研究这些没有意义的问题了。
  • 4楼网友:逃夭
  • 2021-05-17 02:14
这个讲究运算符的优先级,和a++与++a的区别就好理解了。
  • 5楼网友:罪歌
  • 2021-05-17 02:01
可怜的应试教育,要是我手下的程序员写出这种程序来,我会直接炒掉的...
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯