diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 7dde2535d..8864ea40e 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -4796,9 +4796,11 @@ void Tokenizer::simplifyFloatCasts() { for (Token *tok = list.front(); tok; tok = tok->next()) { if (Token::Match(tok->next(), "( float|double ) %num%") && MathLib::isInt(tok->strAt(4))) { + const bool isFloatType(tok->strAt(2) == "float"); tok->deleteNext(3); tok = tok->next(); - tok->str(tok->str() + ".0"); + // in case of type 'float', add the corresponding suffix 'f' + tok->str(tok->str() + (isFloatType ? ".0f":".0")); } } } diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 20333f8e9..028fc4289 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -1127,9 +1127,9 @@ private: void simplifyFloatCasts() { // float casting integers // C-style casts - ASSERT_EQUALS("a = 1.0 ;", tokenizeAndStringify("a = (float)1;")); - ASSERT_EQUALS("a = 1.0 ;", tokenizeAndStringify("a = ((float)1);")); - ASSERT_EQUALS("a = 291.0 ;", tokenizeAndStringify("a = ((float)0x123);")); + ASSERT_EQUALS("a = 1.0f ;", tokenizeAndStringify("a = (float)1;")); + ASSERT_EQUALS("a = 1.0f ;", tokenizeAndStringify("a = ((float)1);")); + ASSERT_EQUALS("a = 291.0f ;", tokenizeAndStringify("a = ((float)0x123);")); ASSERT_EQUALS("a = 1.0 ;", tokenizeAndStringify("a = (double)1;")); ASSERT_EQUALS("a = 1.0 ;", tokenizeAndStringify("a = ((double)1);"));