//類型轉換面試題.cpp
char foo(void)
{
unsigned int a=6;
int b=-20;
char c;
(a+b>6)?(c=1):(c=0);
return c;
}
//解析: unsigned int 類型的數據與int類型的數據相運算後,自動轉換爲unsigned int 類型。
//因此a+b的值不是-14,而是一個unsigned int類型的數4294967382。
//因此返回值是1,與實際我們想要得到的結果不符。可以定義一個int類型的數接受a+b的值,如
//int c=a+b。或者是對相加結果進行強制類型轉換,如int(a+b)。
//這個問題測試你是否懂得C語言中的整數自動轉化規則。我們發現有些開發者極少懂得這些東西。
//-20變成了一個非常大的正整數,所以表達式的結果大於6。這一點對於頻繁用到無符號數據類型
//的嵌入式系統來說是非常重要的。如果你答錯了這個問題,你也就到了得不到這份工作的邊緣。