Integer multiplication or shift implicitly cast to 'long'
Reports integer multiplications and left shifts that are implicitly cast to long.
Example:
void f(int i) {
long val = 65536 * i;
}
After the quick-fix is applied, the code changes to:
void x(int i) {
long val = 65536L * i;
}
Example:
void f(int i) {
long value = i << 24;
}
After the quick-fix is applied, the code changes to:
void f(int i) {
long value = (long) i << 24;
}
Such multiplications are often a mistake, as overflow truncation may occur unexpectedly. Converting an int
literal to a long
literal (65536L
) fixes the problem.
Inspection options
Option | Type | Default |
---|---|---|
Ignore expressions where it's proven statically that overflow is impossible | Checkbox | true |
Inspection Details | |
---|---|
Available in: | IntelliJ IDEA 2023.3, Qodana for JVM 2023.3 |
Plugin: | Java, 233.SNAPSHOT |
Last modified: 13 July 2023