【发布时间】:2014-05-19 21:23:05
【问题描述】:
为什么会这样:
char c = 5;
int i = c++;
但这会引发编译器错误(运算符的无效参数 ++/--):
int i = argv[0].charAt(0)++;
【问题讨论】:
为什么会这样:
char c = 5;
int i = c++;
但这会引发编译器错误(运算符的无效参数 ++/--):
int i = argv[0].charAt(0)++;
【问题讨论】:
++ 运算符适用于返回对可写内容的引用的变量和表达式,而不是一般的所有值。换句话说,根本没有办法将递增的char 的值写回原始字符串,所以charAt(0)++ 是一个错误。
您可以通过将argv[0] 转换为字符数组并在该数组中增加一个值来解决此问题。
【讨论】:
x 而不是x++,因为表达式计算的值是相同的。
增量运算符只能应用于左值,这意味着表达式的计算结果可以出现在赋值表达式的左侧。函数的返回值不是左值。
在您的charAt(0) 调用与基础char[] 中读取此char 值的位置之间没有任何联系。如果你有
argv[0].value[0]++;
这可行,但value 是
private final char[] value;
在不可变字符串类中。
【讨论】:
简单地说:它需要一个变量。这不是一个
变量argv[0].charAt(0) 而是一个方法调用。
【讨论】: