所以我的问题是:
#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;
}我不知道是否需要最后一部分,但我不确定,所以我确实包括了它。
我知道还有其他线程也有类似的问题,但我无法在那里找到解决方案。
发布于 2014-08-26 17:53:02
lvalue是一个可以赋值的值,如果经常是一个变量的话。相反,rvalue是一个不能分配给它的值。名称来自这样的趋势:lvalues倾向于出现在赋值的左侧,而rvalues则倾向于出现在赋值的右侧。在您的代码中,您有:
tal * tal = sum;这是一个错误,因为tal * tal生成一个不能分配给它的值。表达式会产生一个数字,但这与变量不同,因为将一个数字赋给另一个数字是没有意义的。这就像是在说5 = variable。
还请记住,赋值是不可交换的。也就是说,tal * tal = sum并不等同于sum = tal * tal。=左边的名称将被赋给右边的值,所以左边的名称必须始终是可以赋值的东西,即lvalue。
发布于 2014-08-26 17:48:47
您必须将接收新值的变量放在=的左侧。
sum = tal * tal;
pro = alt * alt * alt;https://stackoverflow.com/questions/25512021
复制相似问题