2
我的同學問我一個問題:三元操作「?:」的返回值是什麼?
什麼是X,Y,Z的後這個值:
x=5;
y=8;
z=((x++)<(y++)?(x++):(y++));
我也不太清楚這件事,所以我測試了它,答案是:
x=7,y=9,z=6
我能理解爲什麼「x = 7」和「y = 9」,但爲什麼「z = 6」?該表達式不應該返回由「x ++」計算的值嗎?
感謝您的幫助:)
我的同學問我一個問題:三元操作「?:」的返回值是什麼?
什麼是X,Y,Z的後這個值:
x=5;
y=8;
z=((x++)<(y++)?(x++):(y++));
我也不太清楚這件事,所以我測試了它,答案是:
x=7,y=9,z=6
我能理解爲什麼「x = 7」和「y = 9」,但爲什麼「z = 6」?該表達式不應該返回由「x ++」計算的值嗎?
感謝您的幫助:)
有?
運營商和第二或第三運營商,並因此第一x++
的第一操作數的評價之間的sequence point將完全採取導致X = 6的效果。但是第二個x++
中的增量只有在評估完整表達式後纔會生效,因爲該表達式中不再有序列點,因此x保持6且z = 6。
「三元」,而不是「三目」。 「眼睛」意味着視覺,除非你是來自Tau Ceti的眼睛mon mon的怪物,它不適用於你:-) – paxdiablo 2012-04-10 07:13:40
第二個'x ++'計算的值是6;這就是爲什麼'z'被賦值的原因。6.'x'中的值在7之後,但後增量意味着增量前的值被賦值爲'z'。 – 2012-04-10 07:14:54
哦再次順序點........ >> !!! – 2012-04-10 07:31:18