关于#表达式必须包含整形#的问题,如何解决?(语言-c语言)

表达式必须包含整型

#define _CRT_SECURE_NO_WARNINGS
#include 
int main()
{
    double a, b, c,p , s,temp;
    printf("请输入三条边的长度:\n");
    scanf("%lf %lf %lf", &a, &b, &c);
        p = (a + b + c) / 2.0;
        s = (p * (p - a) * (p - b) * (p - c)) ^ (1 / 2);

在 s = (p * (p - a) * (p - b) * (p - c)) ^ (1 / 2);
的第一个p下面划红线,报错。
显示表达式必须包含整型。

^ 这个符号在c++里面不是表示次方,是异或,你要表示开根号可以用pow(a,0.5);^异或需要都是整数才行,你的p是浮点数,所以报错。