You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

报错:lvalue required as unary ‘&’ operand 调试求助

解决编译错误:lvalue required as unary ‘&’ operand

错误原因

scanf的第二个参数要求传入变量的地址(左值,即可以被赋值的内存对象),而你写的&prompt_for_parking()是对函数调用的返回值取地址——函数返回的是临时double值,不属于左值,无法被取地址,因此编译器报错。

正确实现方式

根据你的需求(获取用户输入的double值并存储),有两种合理的修正方案:

方案1:让prompt_for_parking函数负责输入逻辑

既然函数原型是double prompt_for_parking(void),可以把输入逻辑封装在函数内部,返回用户输入的值:

double prompt_for_parking(void) {
    double parking_input;
    // 注意去掉格式字符串里的\n,否则会导致程序等待额外输入
    scanf("%lf", &parking_input);
    return parking_input;
}

在主逻辑中调用函数并接收返回值:

double parking_val = prompt_for_parking();
// 后续用parking_val进行相关处理

方案2:直接在主逻辑中处理输入

如果不需要通过prompt_for_parking封装输入,直接定义变量存储输入值:

double parking_val;
scanf("%lf", &parking_val);
// 若需要将值传入prompt_for_parking处理,可修改函数原型为void prompt_for_parking(double*),然后调用:
// prompt_for_parking(&parking_val);

额外注意事项

  • 不要在scanf的格式字符串中加\n:scanf会自动忽略输入中的空白字符(回车、空格等),添加\n会导致程序需要用户输入额外的空白才会继续执行。

内容的提问来源于stack exchange,提问作者Sheila Li

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:12:03