首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:表达式必须是可修改的lvalue (tal * tal)

错误:表达式必须是可修改的lvalue (tal * tal)
EN

Stack Overflow用户
提问于 2014-08-26 17:44:07
回答 2查看 774关注 0票数 0

所以我的问题是:

代码语言:javascript
复制
#include "stdafx.h"

int kvad(int tal) {
    int sum;
    tal * tal = sum; /* The left "tal" has the error: Expression must be a modifiable lvalue*/
    return sum;
}

int kub(int alt) {
    int pro;
    alt * alt * alt = pro; /* The left "alt" has the error: Expression must be a modifiable lvalue*/
    return pro;
}

int _tmain(int argc, _TCHAR* argv[])
{
    int ggr, gda, tre, tva;
    printf("Hur många tal att multiplicera: ");
    scanf_s("%d", ggr);
    printf("\n i   i * i   i * i * i\n=== ======= ===========\n");
    for (gda = 1; gda <= ggr; gda++) {
        tva = kvad(gda);
        tre = kub(gda);
        printf("%2d%6d%10d\n", gda, tva, tre);
    }
    return 0;
}

我不知道是否需要最后一部分,但我不确定,所以我确实包括了它。

我知道还有其他线程也有类似的问题,但我无法在那里找到解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-26 17:53:02

lvalue是一个可以赋值的值,如果经常是一个变量的话。相反,rvalue是一个不能分配给它的值。名称来自这样的趋势:lvalues倾向于出现在赋值的左侧,而rvalues则倾向于出现在赋值的右侧。在您的代码中,您有:

代码语言:javascript
复制
tal * tal = sum;

这是一个错误,因为tal * tal生成一个不能分配给它的值。表达式会产生一个数字,但这与变量不同,因为将一个数字赋给另一个数字是没有意义的。这就像是在说5 = variable

还请记住,赋值是不可交换的。也就是说,tal * tal = sum并不等同于sum = tal * tal=左边的名称将被赋给右边的值,所以左边的名称必须始终是可以赋值的东西,即lvalue

票数 2
EN

Stack Overflow用户

发布于 2014-08-26 17:48:47

您必须将接收新值的变量放在=的左侧。

代码语言:javascript
复制
sum = tal * tal;
pro = alt * alt * alt;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25512021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档