考慮下面的代碼,顯示編譯時錯誤:錯誤三元表達
#include <stdio.h>
int main(int argc, char** argv)
{
int x=5,y=0,z=2;
int a=z?x,y?x:(y); // but z?x,y?x:y:z is not showing any error
printf("%d",a);
return 0;
}
請幫我解釋一下爲什麼z?x,y?x:y:z
沒有顯示任何錯誤的原因是什麼?
考慮下面的代碼,顯示編譯時錯誤:錯誤三元表達
#include <stdio.h>
int main(int argc, char** argv)
{
int x=5,y=0,z=2;
int a=z?x,y?x:(y); // but z?x,y?x:y:z is not showing any error
printf("%d",a);
return 0;
}
請幫我解釋一下爲什麼z?x,y?x:y:z
沒有顯示任何錯誤的原因是什麼?
爲什麼會這樣;它是有效的和組這樣的:
z?(x, (y?x:y)):z
條件表達式的中間操作數可以任何表達。
z?x,y?x:y:z
是兩個三元表達式。我將它寫成這樣:
z ? (x, y ? x : y) : z
恰好有一個?
每個:
始終。
我不會寫它:) – erikkallen 2010-03-15 12:04:59
它是正確的。對於每個? ?正好一個:將會出現在 三元表達式 在z?x,y?x中沒有:(y);
此代碼非常容易出錯。 – 2010-03-15 12:03:22