在看java语言规范中文第三版时遇到一个讲解自增运算符中类型转换的翻译不明的问题

时间:2021-12-30 23:22:06
其中在讲前缀增量运算符++时,有这么一段话
前面有一个++运算符的一元表达式是前缀增量表达式。 一元表达式的结果必须可转换(5.1.8节)到数值类型的类型的变量,否则,会编译报错。前缀增量表达式的类型是变量的类型,前缀增量表达式的类型是变量的类型。前缀增量表达式的结果不是一个变量,而是一个值。

标红的那段话就是我不明白的地方,能否讲解一下,这句话表达的意思是什么?英文原句如下:

A unary expression preceded by a ++ operator is a prefix increment expression.
The result of the unary expression must be a variable of a type that is convertible
(5.1.8) to a numeric type, or a compile-time error occurs.
 The type of the prefix
increment expression is the type of the variable. The result of the prefix increment
expression is not a variable, but a value.

5 个解决方案

#1


额,最近这么少的人呢?

#2


不就是说能转成数字嘛?
bool型就不行..字符串也不行..

#3


引用 2 楼 scmod 的回复:
不就是说能转成数字嘛?
bool型就不行..字符串也不行..


让其他人尝试翻译了一下:
前面有++操作符的一元表达式是前缀自增表达式,一元表达式的运算结果必须是一个可变换成数字类型的变量,否则会出现一个编译期错误。前缀自增表达式的类型作为那个变量的类型,前缀自增表达式的运行结果是一个值,而不是变量。

现在我有一个问题,一元表达式的运算结果必须是一个可变换成数字类型的变量,这句话中的可变换成数字类型的变量是什么意思呢? “一元表达式的运算结果必须是一个可变换成数字类型的变量”与“前缀自增表达式的运行结果是一个值,而不是变量”这不就结论冲突了么?

#4


我是这样理解:一元表达式的运算结果必须是一个可变换成数字类型的变量,这个变量所指:整型类型取值范围内任何一个整数值所以这里称为变量。而前缀自增表达式的运行结果是一个值:这个变量经过自增运算符操作后是一个常量一个值。

#5


引用 4 楼 qq_33761135 的回复:
我是这样理解:一元表达式的运算结果必须是一个可变换成数字类型的变量,这个变量所指:整型类型取值范围内任何一个整数值所以这里称为变量。而前缀自增表达式的运行结果是一个值:这个变量经过自增运算符操作后是一个常量一个值。

……作者写完书之后不知道能否辨别出,此变量非彼变量。

#1


额,最近这么少的人呢?

#2


不就是说能转成数字嘛?
bool型就不行..字符串也不行..

#3


引用 2 楼 scmod 的回复:
不就是说能转成数字嘛?
bool型就不行..字符串也不行..


让其他人尝试翻译了一下:
前面有++操作符的一元表达式是前缀自增表达式,一元表达式的运算结果必须是一个可变换成数字类型的变量,否则会出现一个编译期错误。前缀自增表达式的类型作为那个变量的类型,前缀自增表达式的运行结果是一个值,而不是变量。

现在我有一个问题,一元表达式的运算结果必须是一个可变换成数字类型的变量,这句话中的可变换成数字类型的变量是什么意思呢? “一元表达式的运算结果必须是一个可变换成数字类型的变量”与“前缀自增表达式的运行结果是一个值,而不是变量”这不就结论冲突了么?

#4


我是这样理解:一元表达式的运算结果必须是一个可变换成数字类型的变量,这个变量所指:整型类型取值范围内任何一个整数值所以这里称为变量。而前缀自增表达式的运行结果是一个值:这个变量经过自增运算符操作后是一个常量一个值。

#5


引用 4 楼 qq_33761135 的回复:
我是这样理解:一元表达式的运算结果必须是一个可变换成数字类型的变量,这个变量所指:整型类型取值范围内任何一个整数值所以这里称为变量。而前缀自增表达式的运行结果是一个值:这个变量经过自增运算符操作后是一个常量一个值。

……作者写完书之后不知道能否辨别出,此变量非彼变量。