c++的类型检查要严格一些, sqrt只接受浮点数类型的参数, 把(int)num改为(double)num之类就可以了c是弱类型语言, 把int传入float/double类型的参数时会作隐式类型转换; 这里自己标上(int)表示你要求这个num转换为int类型而不是float等, 于是c++认定这是个类型错误