小蒙 发表于 2017-10-21 14:57:21

'+'两端表达式运算顺序

本帖最后由 小蒙 于 2017-10-21 14:57 编辑

C primer plus中有这样一段叙述:
int x =a * b + c * d
C语言没有规定先算+号前半部或者后半部,在不同的硬件上完成效果不一样,可能在一种硬件上是从左至右进行,可能在另一种硬件上就是先算c * d然后再算a * b,然后再相加。接着给出了另一个例子。
int x = num / 2 + num++
书里说这个表达式的计算顺序就有不同的可能。但是据我理解,表格显示自增运算符的优先级大于除号,从这个角度看,应该先算自增,然后算除法,最后加法,哪一种是对的?

咸鱼干 发表于 2017-10-21 16:53:36

{:10_258:}

丶忘却的年少o 发表于 2017-10-21 16:59:35

你可以把自增看成是一个数字,它就是一个整体。再按照优先级计算就可以。
别在纠结于这些,只要知道优先级,写代码的时候注意一下优先级,该加()加()。太在意这些会影响你写代码的思绪的。就像那个三个自增相加结果是多少的问题一样,别太纠结,平时也不太会这么用,一来这样写自己要思考,需要时间,二来别人看也费劲。

小蒙 发表于 2017-10-21 17:16:51

丶忘却的年少o 发表于 2017-10-21 16:59
你可以把自增看成是一个数字,它就是一个整体。再按照优先级计算就可以。
别在纠结于这些,只要知道优先级 ...

谢谢,我想着想着就不自觉的跑偏{:5_109:}

小蒙 发表于 2017-10-23 11:48:54

丶忘却的年少o 发表于 2017-10-21 16:59
你可以把自增看成是一个数字,它就是一个整体。再按照优先级计算就可以。
别在纠结于这些,只要知道优先级 ...

大牛你好,我又发了一个问题贴,有时间能不能帮忙看一下? 谢谢。看这里

丶忘却的年少o 发表于 2017-10-23 13:13:34

小蒙 发表于 2017-10-23 11:48
大牛你好,我又发了一个问题贴,有时间能不能帮忙看一下? 谢谢。看这里

你发出来的时候我就看过了,只是我不知道,就不回了,怕误导了你,我也只是个初学者{:10_278:}

小蒙 发表于 2017-10-23 13:16:18

丶忘却的年少o 发表于 2017-10-23 13:13
你发出来的时候我就看过了,只是我不知道,就不回了,怕误导了你,我也只是个初学者

谦虚谦虚。

丶忘却的年少o 发表于 2017-10-23 13:18:13

小蒙 发表于 2017-10-23 13:16
谦虚谦虚。

没有没有,真的。我只学了半年不到

小蒙 发表于 2017-10-23 13:20:04

丶忘却的年少o 发表于 2017-10-23 13:18
没有没有,真的。我只学了半年不到

那也比我强,我只学了1个月不到。。。

丶忘却的年少o 发表于 2017-10-23 13:22:11

小蒙 发表于 2017-10-23 13:20
那也比我强,我只学了1个月不到。。。

你应该是看C primer plus学吧?我看不进书,我就只看了视频

小蒙 发表于 2017-10-23 13:29:49

丶忘却的年少o 发表于 2017-10-23 13:22
你应该是看C primer plus学吧?我看不进书,我就只看了视频

对,刚才那个帖子我又试了几个例子,“文件结束符”这个东西确实scanf和getchar都收不了他们,我能做到的只能被动的让文件结束符一直走到主调函数,放在主调函数的倒数第二行(return 0;上面),才能比较自然的退出程序。

小蒙 发表于 2017-10-23 13:32:32

丶忘却的年少o 发表于 2017-10-23 13:22
你应该是看C primer plus学吧?我看不进书,我就只看了视频

你用clion么?clion的终端怎么样输入文件结束符,ctrl+D在这里不好用,我只能把系统terminal打开,在那里运行程序,然后ctrl+D才能用。

丶忘却的年少o 发表于 2017-10-23 13:40:46

小蒙 发表于 2017-10-23 13:32
你用clion么?clion的终端怎么样输入文件结束符,ctrl+D在这里不好用,我只能把系统terminal打开,在那里 ...

我没用过,我到先在只用VC++6.0和linux,不过linux很少用,调试太麻烦,基本用VC++6.0,因为不做什么大的编程,也没什么新规则,就没换编译器,能用就成
页: [1]
查看完整版本: '+'两端表达式运算顺序