![]() |
|
MISRA-C:2004 Rule 10.2: (Required) |
|
||||
![]() | |||||||
* No implicit conversions between integer and floating types
* No implicit conversions from wider to narrower types
* No implicit conversions of function arguments
* No implicit conversions of function return expressions
* No implicit conversions of complex expressions
The intention when restricting implicit conversion of complex expressions is to require that in a sequence of arithmetic operations within an expression, all operations should be conducted in exactly the same arithmetic type. Notice that this does not imply that all operands in an expression are of the same type.
externvoidfoo1(uint8_t x); int16_t t1(void){... f32a=f64a;/* not compliant */f32a=2.5;/* not compliant - unsuffixed floating constants are of type double */s32a=u8b+u8c;/* not compliant */f32a=2.5F;/* compliant */u8a=f32a;/* not compliant */f32a=1;/* not compliant */f32a=s16a;/* not compliant */... f32a+1/* not compliant */... f64a*s32a/* not compliant */}int16_t foo2(void){... f64a=f32a+f32b;/* not compliant */f64a=f64b+f32a;/* compliant */f64a=s32a/s32b;/* not compliant */...}
QAC messages that encompass this guideline:
| 1264 | A suffixed floating constant is being converted to a different floating type on assignment. |
| 1265 | An unsuffixed floating constant is being converted to a different floating type on assignment. |
| 1266 | A floating constant is being converted to integral type on assignment. |
| 1880 | The operands of this relational operator are expressions of different 'essential type' categories (%1s and %2s). |
| 1881 | The operands of this equality operator are expressions of different 'essential type' categories (%1s and %2s). |
| 1882 | The 2nd and 3rd operands of this conditional operator are expressions of different 'essential type' categories (%1s and %2s). |
| 1892 | A composite expression of 'essentially floating' type (%1s) is being implicitly converted to a wider floating type, '%2s'. |
| 1893 | The 2nd and 3rd operands of this conditional operator are both 'essentially signed' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other. |
| 1894 | The 2nd and 3rd operands of this conditional operator are both 'essentially unsigned' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other. |
| 1895 | The 2nd and 3rd operands of this conditional operator are both 'essentially floating' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other. |
| 4450 | An expression of 'essentially floating' type (%1s) is being converted to Boolean type, '%2s' on assignment. |
| 4452 | An expression of 'essentially floating' type (%1s) is being converted to enum type, '%2s' on assignment. |
| 4453 | An expression of 'essentially floating' type (%1s) is being converted to signed type, '%2s' on assignment. |
| 4454 | An expression of 'essentially floating' type (%1s) is being converted to unsigned type, '%2s' on assignment. |
| 4462 | A non-constant expression of 'essentially floating' type (%1s) is being converted to narrower floating type, '%2s' on assignment. |
| 4465 | A constant expression of 'essentially floating' type (%1s) is being converted to narrower floating type, '%2s' on assignment. |
| 4472 | A non-constant expression of 'essentially floating' type (%1s) is being passed to a function parameter of wider floating type, '%2s'. |
| 4482 | A non-constant expression of 'essentially floating' type (%1s) is being returned from a function defined with a wider floating return type, '%2s'. |
| 4492 | A composite expression of 'essentially floating' type (%1s) is being converted to wider floating type, '%2s' on assignment. |
Related rules:
| Rule 10.1 | The value of an expression of integer type shall not be implicitly converted to a different underlying type if: a) it is not a conversion to a wider integer type of the same signedness, or b) the expression is complex, or c) the expression is not constant and is a function argument, or d) the expression is not constant and is a return expression |
|
||
(c) The Motor Industry Research Association, 2004
|
QA C Source Code Analyser 8.1.2
MISRA-C:2004 Compliance Module 3.2 © 2013 Programming Research www.programmingresearch.com |
Personality Groups | Glossary | Message Index | MISRA-C:2004 Rule Index | Contents |