vs软件最后的编译失败

具体代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,t, p, q, o;
scanf_s("%lf,%lf,%lf", &a, &b, &c);
t = b * b - 4 * a * c;
o = sqrt(t);
if (t == 0)
{
q = p = ((-b) + o) / 2 * a;
printf("q=p=%f", &q);
}
else
if (t > 0)
{
q = ((-b) + o) / 2 * a;
p = ((-b) - o) / 2 * a;
printf("q=%f,p=%f", &q, &p);
}
return 0;
}
最后编译的结果却是这样,这是为什么啊?

img

printf("q=p=%f", &q); 输出里,q 前面没有'&' 符号。
printf("q=%f,p=%f", &q, &p); 这里也是一样的多了 ‘&‘ 符。
修改见注释处,供参考:

#include <stdio.h>
#include <math.h>
int main()
{
    float a, b, c, t, p, q, o;
    scanf_s("%f%f%f", &a, &b, &c); //修改
    //scanf_s("%lf,%lf,%lf", &a, &b, &c);
    t = b * b - 4 * a * c;
    if (t >= 0) //修改
    {
        o = (float)sqrt(t);
        if (t == 0)
        {
            q = p = ((-b) + o) / 2 * a;
            printf("q=p=%f", q);    //printf("q=p=%f", &q);//修改
        }
        else if (t > 0){
                q = ((-b) + o) / 2 * a;
                p = ((-b) - o) / 2 * a;
                printf("q=%f,p=%f", q, p);  //printf("q=%f,p=%f", &q, &p);//修改
        }
    }
    else{ //修改
        printf("No real solution");//修改
    }
    return 0;
}