gpt4 book ai didi

c - 需要左值作为赋值的左操作数

转载 作者:太空狗 更新时间:2023-10-29 16:25:02 26 4
gpt4 key购买 nike

为什么会出现

lvalue required as left operand of assignment

用一个字符串比较?我如何在 C 中解决这个问题?

if (strcmp("hello", "hello") = 0)

谢谢!

最佳答案

你需要比较,而不是赋值:

if (strcmp("hello", "hello") == 0)
^

因为你想检查 strcmp("hello", "hello") 的结果是否等于 0

关于错误:

lvalue required as left operand of assignment

lvalue 表示可分配的值(变量),并且在分配给 = 的左值必须是 lvalue (很清楚) .

函数结果和常量都是不可赋值的(右值),因此它们是右值。所以顺序并不重要,如果你忘记使用 == 你会得到这个错误。 (编辑:)我认为与将常量放在左侧相比,这是一个很好的做法,因此如果您编写 = 而不是 ==,你会得到一个编译错误。例如:

int a = 5;
if (a = 0) // Always evaluated as false, no error.
{
//...
}

对比

int a = 5;
if (0 = a) // Generates compilation error, you cannot assign a to 0 (rvalue)
{
//...
}

(请参阅此问题的第一个答案:https://stackoverflow.com/questions/2349378/new-programming-jargon-you-coined)

关于c - 需要左值作为赋值的左操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6162438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com