御笔剑客 发表于 2017-10-24 17:49:38

c语言逗号运算符的一个问题

为什么
houseprice=(249,500),这样的表达式最后面赋值给houseprice的值是500而不是249呢?

千亩计者 发表于 2017-10-24 18:13:06

等号的右结合性,把右边的值赋给表达式。

御笔剑客 发表于 2017-10-24 18:41:51

千亩计者 发表于 2017-10-24 18:13
等号的右结合性,把右边的值赋给表达式。

啥?没怎么听明白{:10_266:}

千亩计者 发表于 2017-10-24 18:56:05

御笔剑客 发表于 2017-10-24 18:41
啥?没怎么听明白

应该是一个语法,我也是猜的,比如a =2,是将等号右边的值赋给左边的变量,houseprice=(249,500)也应该是用右边的覆盖左边的值,不知道这么想对不对。。。。

御笔剑客 发表于 2017-10-24 19:24:24

好像不是覆盖的

丶忘却的年少o 发表于 2017-10-24 19:37:45

御笔剑客 发表于 2017-10-24 19:24
好像不是覆盖的

是这样的,逗号运算符的作用是:老子不管你前面写了什么,我都要把最后面的值给变量!!!
当然,你可以把他当小弟,把右边的()给去了,优先级来说,赋值“=”优先级大于“,”逗号运算符,一个更大的老大出现,强行把第一个值给了前面的变量。所以,逗号运算符必须要一个()罩着它,不然也是白瞎!!!

御笔剑客 发表于 2017-10-24 20:57:08

丶忘却的年少o 发表于 2017-10-24 19:37
是这样的,逗号运算符的作用是:老子不管你前面写了什么,我都要把最后面的值给变量!!!
当然,你可以 ...

底层一点的实现过程是怎样的呢?

丶忘却的年少o 发表于 2017-10-24 21:02:27

御笔剑客 发表于 2017-10-24 20:57
底层一点的实现过程是怎样的呢?

啊?什么是底层?你的意思是不是要给个例子或者示范?
a = (249,500);比如这个语句,加了(),那肯定执行()内的逗号运算符,逗号运算符的意思就是给出最后的值,就是500,别的值都被它排除了,所以 a = 500
a = 249,500;   又比如这个语句,没有(),根据优先级顺序,赋值高于逗号运算符,反正逗号运算符优先级最小!所以 a = 249,后面的不用管了,你要是一定想知道,那就是a = 249;, 500; 这样两个语句,前面是赋值,后面逗号运算符500,没有任何意义的

御笔剑客 发表于 2017-10-24 21:03:50

丶忘却的年少o 发表于 2017-10-24 21:02
啊?什么是底层?你的意思是不是要给个例子或者示范?
a = (249,500);比如这个语句,加了(),那肯 ...

我懂了,谢谢大佬

丶忘却的年少o 发表于 2017-10-24 21:04:44

御笔剑客 发表于 2017-10-24 21:03
我懂了,谢谢大佬

{:10_336:} 叫我同学。不然压力很大,被你们捧太高了,我只是初学者 {:10_262:}

御笔剑客 发表于 2017-10-24 21:13:34

丶忘却的年少o 发表于 2017-10-24 21:04
叫我同学。不然压力很大,被你们捧太高了,我只是初学者

{:10_254:}
页: [1]
查看完整版本: c语言逗号运算符的一个问题