应使用 r * r 或 std::pow(r, 2) 计算半径平方,避免误用位异或 ^;π 应用高精度 double 常量定义;输入半径后须验证非负。

直接用 std::pow 或乘法算半径平方,别手滑写成 r^2
很多人在 C++ 里写 r^2 想表示「r 的平方」,结果面积永远不对——因为 ^ 是位异或运算符,不是幂运算。r^2 实际上是 r 和 2 做按位异或,和平方完全无关。
- 正确写法是
r * r(推荐,快且无依赖) - 或
std::pow(r, 2)(需#include,但对整数可能引入浮点误差) - 避免
pow(r, 2)不加std::前缀,否则可能调用 C 风格函数,重载行为不明确
π 的取值:用 M_PI 要小心平台兼容性
M_PI 不是 C++ 标准常量,Linux/glibc 下默认可用,但 Windows MSVC 默认不定义,Clang 也可能不开启。直接用会编译失败。
- 安全做法:
const double PI = 3.14159265358979323846; - 或启用宏(仅限支持的环境):
#define _USE_MATH_DEFINES放在#include之前 - 别用
float存 π,float PI = 3.14f会导致面积计算明显失真(尤其半径大时)
输入半径后立刻检查是否非负,否则面积无意义
圆面积公式 PI * r * r 在数学上要求 r >= 0。C++ 不会自动拦截负数输入,但负半径算出的“面积”是正数,逻辑错误却难以察觉。
- 读入后加判断:
if (r - 如果接受零半径,要明确业务含义(点?退化圆?),并确认是否允许输出
0.0 - 用
double读入比float更稳妥,避免小数截断(如输入2.5被存成2.499999)
#include#include #include int main() { const double PI = 3.14159265358979323846; double r; std::cout << "请输入半径: "; std::cin >> r;
if (r zuojiankuohaophpcn 0) { std::cerr zuojiankuohaophpcnzuojiankuohaophpcn "错误:半径不能为负。\n"; return 1; } double area = PI * r * r; std::cout zuojiankuohaophpcnzuojiankuohaophpcn std::fixed zuojiankuohaophpcnzuojiankuohaophpcn std::setprecision(6); std::cout zuojiankuohaophpcnzuojiankuohaophpcn "圆的面积是: " zuojiankuohaophpcnzuojiankuohaophpcn area zuojiankuohaophpcnzuojiankuohaophpcn "\n"; return 0;}
立即学习“C++免费学习笔记(深入)”;
实际跑起来最常出问题的,是把
^当乘方、漏掉负数检查、还有在不同编译器间挪代码时M_PI突然失效——这三个点卡住的人,远多于公式本身。










