![]() |
![]() |
4120 | ![]() |
||||
![]() | |||||||
| Arithmetic type - Complex expressions | |||||||
The value of an expression of integral type is being implicitly converted to a wider integral type. Be aware that the expression itself is not evaluated in the wider type. Message 4120 is generated when the value resulting from some specific operators is of type int or unsigned int and is implicitly converted to a larger integral type. The only operators which may trigger this message are ~ * / + - and <<. The danger associated with this kind of operation is that the programmer may assume, incorrectly, that the operation is performed in the wider type to which the expression is ultimately converted. In the following examples, message 4120 will only be generated if the size of type long is greater than the size of type int.
/*PRQA S 584,2017,2100,3103,3120,3198,3199,3203,3408,3447 ++*/
/*************************************
* OPTIONS: -s int=16
************************************/
extern unsigned int uia;
extern unsigned int uib;
extern unsigned char uca;
extern unsigned char ucb;
extern void foo(void)
{
unsigned long ula;
ula = ~uia; /* Message 4120 */
ula = uia * uib; /* Message 4120 */
ula = uia / uib; /* Message 4120 */
ula = uia % uib; /* */
ula = uia + uib; /* Message 4120 */
ula = uia - uib; /* Message 4120 */
ula = uia & uib; /* */
ula = uia | uib; /* */
ula = uia ^ uib; /* */
ula = uia << 2; /* Message 4120 */
ula = uib >> 2; /* */
ula = ~uca; /* Message 4120 */
ula = uca * ucb; /* Message 4120 */
ula = uca / ucb; /* Message 4120 */
ula = uca % ucb; /* */
ula = uca + ucb; /* Message 4120 */
ula = uca - ucb; /* Message 4120 */
ula = uca & ucb; /* */
ula = uca | ucb; /* */
ula = uca ^ ucb; /* */
ula = uca << 2; /* Message 4120 */
ula = ucb >> 2; /* */
ula = (unsigned long)(~uia); /* Message 4121 */
ula = (unsigned long)(uia * uib); /* Message 4121 */
ula = (unsigned long)(uia / uib); /* Message 4121 */
ula = (unsigned long)(uia % uib); /* */
ula = (unsigned long)(uia + uib); /* Message 4121 */
ula = (unsigned long)(uia - uib); /* Message 4121 */
ula = (unsigned long)(uia & uib); /* */
ula = (unsigned long)(uia | uib); /* */
ula = (unsigned long)(uia ^ uib); /* */
ula = (unsigned long)(uia << 2); /* Message 4121 */
ula = (unsigned long)(uib >> 2); /* */
ula = (unsigned long)(~uca); /* Message 4121 */
ula = (unsigned long)(uca * ucb); /* Message 4121 */
ula = (unsigned long)(uca / ucb); /* Message 4121 */
ula = (unsigned long)(uca % ucb); /* */
ula = (unsigned long)(uca + ucb); /* Message 4121 */
ula = (unsigned long)(uca - ucb); /* Message 4121 */
ula = (unsigned long)(uca & ucb); /* */
ula = (unsigned long)(uca | ucb); /* */
ula = (unsigned long)(uca ^ ucb); /* */
ula = (unsigned long)(uca << 2); /* Message 4121 */
ula = (unsigned long)(ucb >> 2); /* */
}
See also:
![]() | ||
| QA·C Source Code Analyser 8.1.2
© 2013 Programming Research. www.programmingresearch.com | Personality Groups | Glossary | Message Index | Contents |