高考申論題
106年
[電力工程] 計算機概論
第 二 題
📖 題組:
四、 【程式 A】 01 #include
02 #include
03 main()
04 {
05 int i=7, a, b, c, d;
06 a=i++;
07 b=++i;
08 c=i--; c+=c;
09 d=--i; d=--d;
10 printf("%d, %d, %d, %d", a, b, c, d);
11 system("PAUSE");
12 }
【程式 B】
01 #include
02 #include
03 main()
04 {
05 int a[5]={1, 3, 5, 7, 9};
06 int b=7, c=0;
07 b++;
08 c=b+a[5];
09 printf("%d, %d\n", b, c);
10 system("PAUSE");
11 }
四、 【程式 A】 01 #include
📝 此題為申論題,共 2 小題
小題 (二)
執行下列程式 B 將會得到什麼結果?詳細說明理由。(10 分)
思路引導 VIP
看這題時要立刻對陣列宣告保持敏感。宣告 int a[5],有效索引只到 4。第 08 行出現了 a[5],這是一個越界(Out-of-Bounds)存取。在 C 語言中這會產生「未定義行為(Undefined Behavior)」。說明這一點才是本題的真正考點。
小題 (一)
執行下列程式 A 將會得到什麼結果?詳細說明理由。(10 分)
思路引導 VIP
本題重點在於 C/C++ 中「前置(Prefix)」與「後置(Postfix)」遞增/遞減運算子的差異。分析步驟:
i++(後置):先傳回目前值,再將變數加 1。