Search code examples
cimplicit-typing

Will "long i = 1;" cause an implicit type conversion in C?


If I write "long i = 1;" instead of "long i = 1l;", will the 1 be recognized as int and then implicitly converted to long?

Edit: Thank you all. I see there's no type conversion. Is this also the case with the suffix u (like 10u)? Then what's the use of those l and u?


Solution

  • The compiler will see what you are trying to assign and set the value to 1 immediately. There is no type conversion that happens with a literal. Even if you said long x = 1.0, you won't see a runtime type conversion.

    By the way, on Windows, long and int are the same so there wouldn't be a type conversion anyway.

    [Edit: made last comment specific to Windows; removed reference to preprocessor]