我们老师说,研究这些类似a++,++a是没有用的,不同的运行器得出的结果也会不一样。
635624913 发表于 2016-3-14 11:57
我们老师说,研究这些类似a++,++a是没有用的,不同的运行器得出的结果也会不一样。
我不是在研究 ++ --运算符啊,我想说的是运算符的优先级 以及一些编程上的小细节
本帖最后由 庚午 于 2016-3-14 19:30 编辑
x51zqq 发表于 2016-3-14 07:58
这话怎么讲
z = x++, y++, ++y;
这是一个逗号表达式,取值是最后一个++y,作为z的值。
想不明白为啥是231呢,明明赋值号的优先级比较低啊,经过我在vim上测试确实是231啊
有点搞明白了,先算了后面的的运算,最后把x赋值给z吗
雷雨天玩电脑 发表于 2016-3-14 20:34
有点搞明白了,先算了后面的的运算,最后把x赋值给z吗
不是,你看解释吧 有汇编代码的
庚午 发表于 2016-3-14 19:28
z = x++, y++, ++y;
这是一个逗号表达式,取值是最后一个++y,作为z的值。
呵呵我说你不明白你能这么说就是说明你还没有弄明白运算符的优先级 看汇编代码吧
雷雨天玩电脑 发表于 2016-3-14 20:34
有点搞明白了,先算了后面的的运算,最后把x赋值给z吗
可以看到我的解释吗 回复了就可以看见的呀
x51zqq 发表于 2016-3-14 21:18
呵呵我说你不明白你能这么说就是说明你还没有弄明白运算符的优先级 看汇编代码吧
{:5_102:}{:5_102:}呵呵,你一味的只去看汇编码有什么用,不同的编译器采用的 加加减减 结核性难道会相同,不要想当然的理解汇编码,那会陷入误区
庚午 发表于 2016-3-15 19:56
呵呵,你一味的只去看汇编码有什么用,不同的编译器采用的 加加减减 结核性难道会相同 ...
首先你说的也有道理但是我说的并不是在研究++--运算符,而是语句整体的运算符优先级,逗号运算符为什么是决定一切的,x++肯定是先把x的原值带入运算然后是x自增一,所以执行x++时按照语句整体的运算符优先结合性 先把x的原值赋值给z 然后才是x自增一,最后才是后面语句的一些运算(不论在不同的编译器++--结核性是否一样,z的值都是不变的,除非在不同的编译器C语言的运算符优先级也会不同)
{:9_221:}只是个人见解,我并没有说我就是都对的
谢谢
x51zqq 发表于 2016-3-15 20:59
首先你说的也有道理但是我说的并不是在研究++--运算符,而是语句整体的运算符优先级,逗号运算符为什么是 ...
不解释了,请打开谭浩强先生的C语言书籍 第二章 找到(自加自减运算符和逗号运算符)详细介绍了优先级以及运算符,那里有你需要的答案,如果找不到告诉我,我告诉你在哪一页,
666666666666
来看看
{:9_239:}
支持
本帖最后由 F3IYcZ7 于 2016-12-2 21:40 编辑
231
看看
看看,看看