C++中无内置根号运算符,需用中sqrt()计算平方根(如sqrt(16.0)得4.0),或以Unicode“√”(\u221A)仅作显示。

在 C++ 程序中,**无法直接“打出来”根号符号(√)作为数学运算符**——C++ 本身没有内置的 √ 字符运算符;你看到的根号,要么是输出时用 Unicode 字符 √ 显示(纯文本/界面展示),要么是调用开方函数计算数值结果。
怎么用 sqrt() 计算平方根
这是最常用、最正确的做法:用标准库函数求值,而不是“画根号”。sqrt() 在 中声明,支持 double、float、long double 版本。
- 必须包含头文件:
#include - 参数为非负数,传入负数会导致返回
NaN(或触发域错误,取决于编译器和浮点环境) - 整数需显式转成浮点类型,例如
sqrt(25.0)或sqrt(static_cast,否则可能误调用其他重载或编译失败(25)) - 示例:
double x = sqrt(16.0); // x == 4.0
怎么输出根号符号 √(Unicode)
仅用于控制台显示、调试打印或简单界面(如终端程序),不参与计算。注意:能否正常显示取决于终端/字体是否支持 UTF-8 和 Unicode 字符。
- 在源码中直接写
'√'是可行的,但需确保源文件保存为 UTF-8 编码,且编译器支持(GCC/Clang 默认支持,MSVC 需加/utf-8) - 更兼容的方式是用 Unicode 码点:
"\u221A"(UTF-8 字符串字面量)或L"\u221A"(宽字符) - 示例:
std::cout << "√" << 16 << " = " << sqrt(16.0) << std::endl; // 输出:√16 = 4
- Windows 控制台默认不启用 UTF-8,需先调用
SetConsoleOutputCP(CP_UTF8)(Windows API),否则显示乱码
为什么不能用 √ 当运算符写表达式
C++ 的词法分析器不认识 √,它不是合法运算符,也不是预定义宏。试图写 √25 会直接报错:
立即学习“C++免费学习笔记(深入)”;
-
error: use of undeclared identifier '√'(Clang) -
error: '√' was not declared in this scope(GCC) - 即使你用宏定义
#define √ sqrt,也会因 C++ 预处理器不处理 Unicode 标识符而失败(除非编译器特别扩展,不具可移植性) - 数学表达式解析(如公式引擎)需自行实现词法分析,不属于标准 C++ 能力
真正要小心的是混淆“视觉表示”和“计算行为”——显示 √ 是为了人看,调用 sqrt() 才是让机器算。终端能不能正确渲染 √,远比怎么写它更容易出问题。











