...
| Code Block |
|---|
|
void func(void) {
short a = 533;
int b = 6789;
long c = 466438237;
float d = a / 7; /* d is 76.0 */
double e = b / 30; /* e is 226.0 */
double f = c * 789; /* f may be negative due to overflow */
} |
Compliant Solution (Floating-Point Literal)
...
| Code Block |
|---|
|
void func(void) {
short a = 533;
int b = 6789;
long c = 466438237;
float d = a / 7.0f; /* d is 76.14286 */
double e = b / 30.; /* e is 226.3 */
double f = (double)c * 789; /* f is 368019768993.0 */
} |
Compliant Solution (Conversion)
...
| Code Block |
|---|
|
void func(void) {
short a = 533;
int b = 6789;
long c = 466438237;
float d = a;
double e = b;
double f = c;
d /= 7; /* d is 76.14286 */
e /= 30; /* e is 226.3 */
f *= 789; /* f is 368019768993.0 */
} |
Exceptions
FLP33-EX1: It may be desirable to have the operation take place as integers before the conversion (obviating the need for a call to trunc(), for example). If this is the programmer's intention, it should be clearly documented to help future maintainers understand that this behavior is intentional.
...