【单选】执行下列 C++ 代码,输出是( )。
int a = 7, b = 3;
std::cout << a / b * b + a % b;按 C++ 整数运算的优先级手算:先乘除后加减,且整数除法向零取整——7/3 = 2,7%3 = 1。
先把 7/3 当成 2.33 算成 2.33×3+1=8,或者把 a / b * b 当成 a / (b * b)(忽略左结合)。
题目代码:
int a = 7, b = 3;
std::cout << a / b * b + a % b;本题考查整数除法与取余以及运算符优先级/结合性。
1. 优先级:/、*、% 同级,都高于 +,且同级按从左到右结合。 2. a / b = 7 / 3。两个操作数都是 int,执行整数除法,结果向零截断 = 2(不是 2.333)。 3. 2 * b = 2 × 3 = 6。 4. a % b = 7 % 3 = 1(7 = 2×3 + 1)。 5. 最后 6 + 1 = 7,选 C。
对任意正整数 a、b 恒有:**a / b * b + a % b == a**。 原因:设 a = q·b + r(0 ≤ r < b),则 a/b = q、a%b = r,代回即得。本题不过是把它当成"看起来复杂"的表达式来考。
a % b 这一项,只算了 a / b * b。7 / 3.0 = 2.3333。