以下代码运行后,sum 的结果是( )
int arr[5] = {2, 4, 6, 8, 10};
int sum = 0;
for (int i = 0; i < 5; i++) {
switch (arr[i] % (1|2)) {
case 0: sum += 1; break;
case 1: sum += 2; break;
case 2: sum += 3; break;
}
}答案B。追踪for循环:记录每次循环变量的值和累积结果的变化。注意循环终止条件。
for循环体可能一次都不执行!这是和while循环一样的"先判断后执行"机制。
【考点】按位或运算|取模运算
GESP三级《C++基础》运算符与表达式模块。命题人盯住的是按位或优先级低于取模这一冷知识——多数考生只背"取模运算优先级高",却忘了|比%低一级,导致把arr[i] % (1|2)误读成arr[i] % 1或arr[i] % 3都算错。