已知两个点 $A(x_1, y_1)$ 和 $B(x_2, y_2)$ 在平面直角坐标系中的坐标。下列 C++ 表达式中,能正确计算这两点之间直线距离的是( )。
位运算:&(与)、|(或)、^(异或)、~(取反)、<<(左移)、>>(右移)。异或性质:a^a=0,a^0=a。
区分逻辑运算(&&,||,!)和位运算(&,|,~,!)。左移右移注意符号位的处理(算术右移vs逻辑右移)。负数的位运算要小心。
【考点】sqrt 函数|pow 函数|欧几里得距离|算术运算符优先级
1. 🎯 考纲定位:GESP 八级 C++ 综合应用题,卡住 80% 考生的"公式转代码"能力——把代数符号 ^ 误当幂运算,靠死记硬背而非理解 C++ 运算符体系。
2. 🧠 解题思维:先读公式结构,sqrt 包着平方和,平方用 pow(x-y,2) 或 (x-y)*(x-y),差值用括号锁定,最后调用 sqrt 开方。核心观察:^ 不是幂,pow 才是 C++ 标准幂函数。
3. 🪤 陷阱拆解:A 项把 ^ 当幂,实际是位异或,整个表达式语义崩塌;C 缺 sqrt 只剩平方和;D 用 abs 是曼哈顿距离而非欧几里得。最阴险细节:^ 符号与代数式混淆,只背结论不查语法必选错。
4. 🔄 反命题思维:若改考曼哈顿距离,答案变 D;若求距离平方,去掉 sqrt 即可;若指数改为 3 次方,需 pow(...,3)。刷到同类题先问"命题人想考我什么",别被符号表象带节奏。