前幾天去M面試遇到的幾個問題,請各位高手解解惑
====================================================
問題一
void f(int a)
{
if(a-- >0)
{
f(a); // (1)
cout<< a; // (2)
f(a); // (3)
}
}
int main()
{
int a=3;
f(a);
}
我事後用devC++跑了一下結果是 0102010
但我無法看懂f()內的邏輯...
例如 : 是執行完第一行之後(也就是執行 f(2)->f(1)->f(0)->end )
之後才會執行第二行?
====================================================
問題二
下列program可能有什麼錯誤?
我事後自己在devC++上跑都能動, 實在不解多宣告 volatile 有什麼影響?
int SQR(volatile int *a)
{
return (*a)*(*a);
}
int main()
{
int a = 5;
int *p = &a;
SQR(p);
}
=====================================================
問題三
int main()
{
float a = 0.7;
if(a > 0.7) cout<< "C" <<endl;
else cout<< "C++" <<endl;
//以上這段印出C++
if(a < 0.7)
cout<< "C" <<endl;
else
cout<< "C++" <<endl;
//以上這段印出C
}
這看似簡單但我卻想不通....有什麼到原因是這樣的output ??
後來又被問到 如果 a 的行型態被改為 double 呢?
我剛剛是try了一下 結果都是C++
為何會有這種改變呢?
→
07/31 23:51, , 1F
07/31 23:51, 1F
※ 編輯: caxz (36.227.107.101), 08/01/2015 00:09:23
※ 編輯: caxz (36.227.107.101), 08/01/2015 00:25:31
推
08/01 00:23, , 2F
08/01 00:23, 2F
推
08/01 08:16, , 3F
08/01 08:16, 3F
推
08/02 22:35, , 4F
08/02 22:35, 4F
推
08/03 07:15, , 5F
08/03 07:15, 5F
→
08/03 07:15, , 6F
08/03 07:15, 6F
→
08/03 07:16, , 7F
08/03 07:16, 7F
→
08/03 07:16, , 8F
08/03 07:16, 8F
→
08/03 07:17, , 9F
08/03 07:17, 9F
討論串 (同標題文章)