void lowerit(char line[])
{
int i;
for (i = 0; line[i] != '\0'; ++i)
{
(line[i] >= 'A' && line[i] <= 'Z') ? line[i] = line[i] - 'A' + 'a' : line[i] = line[i];
}
}
很简单的代码.. 由于某种原因,我在for循环的内部Visual Studio中出现错误。 (Line [i] <---这会导致“表达式必须是可修改的值”错误。 我在做什么错了?
答案 0 :(得分:8)
您需要将三元条件写为
DATE
尽管由于line[i] = line[i] >= 'A' && line[i] <= 'Z' ? line[i] - 'A' + 'a' : line[i];
分支是无操作的,所以首选简单的:
。
由于if
和三进制条件具有相同的优先级和关联性(尽管在中间部分被视为括号的情况下,后者可以被虚构地提升),因此您所拥有的表达式未分组您期望的方式,这解释了编译器诊断。实际上,它被分组为
=
有趣的是,它是有效的C ++,但不是有效的C。
最后,您编写的表达式看起来像是标准库函数((line[i] >= 'A' && line[i] <= 'Z') ? line[i] = line[i] - 'A' + 'a' : line[i]) = line[i];
的不可移植版本,您应该改用它。