首先,看看这个题目,打印的结果是什么?
我刚开始怀疑3300是错的,我给的答案是3000
后面听取了室友的观点,我给出的答案又变成了3100
然后经过群里面和宿舍内部的激烈讨论,并且经过编译器的实现,打印出来的结果依然是3300。
我们百思不得其解,最后经过一个c语言学习群里面的激烈讨论,我终于悟了!
printf函数从右向左运算,从左向右打印。
这个题本身就有巧合的成分在里面。
正确的方式是,从右向左运算后,a=b==c此时a=1,再次向左运算,a=3。所以打印的是3300。
如果你非要试试,从左向右运算,你说巧不巧,第一个语句a=3,第二个语句a=1。所以打印的是3100。
原因就在于,从右向左打印,刚好最后一个语句修改了a的值,所以打印的结果没有问题。如果你从左向右打印,后面的两个语句修改不了a的值,所以就出现了问题。
也许在大佬眼里,这只是一个没有价值的题目。但是对于我这种初识c语言的菜鸟,这一个小小的题目恰恰激发了我对c语言的浓厚兴趣。或许大佬都是这样成长起来的吧(狗头)。