C++面試題之類型轉換面試題

//類型轉換面試題.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。這一點對於頻繁用到無符號數據類型
//的嵌入式系統來說是非常重要的。如果你答錯了這個問題,你也就到了得不到這份工作的邊緣。

發佈了36 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章