为什么这样做:
char c = 5;
int i = c++;
但这会引发编译器错误(无效参数到Operator ++ / - ):
int i = argv[0].charAt(0)++;
答案 0 :(得分:11)
++
运算符处理变量和表达式,返回对可写事物的引用,而不是一般所有值。换句话说,根本没有办法将递增的char
的值写回原始字符串,因此charAt(0)++
是错误。
您可以通过将argv[0]
转换为字符数组并递增该数组中的值来解决此问题。
答案 1 :(得分:8)
增量运算符只能应用于 lvalues ,这意味着表达式可以计算出可以出现在赋值表达式左侧的内容。函数的返回值不是左值。
您的charAt(0)
调用与基础char[]
中从此char值读取的位置之间没有任何关联。如果你有
argv[0].value[0]++;
可行,但value
是
private final char[] value;
in immutable String类中的。
答案 2 :(得分:2)
简单地说:它需要一个变量。这不是一个
变量argv[0].charAt(0)
但方法调用。