Блог пользователя noogler

Автор noogler, 10 лет назад, По-русски

Is this code below works on all platform with C++11 compiler?

I know that earlier we had to to use "%I64d" for Windows platform and "%lld" for linux like platforms.

long long = (long long)1e18;
printf("%lld\n", a);
  • Проголосовать: нравится
  • +5
  • Проголосовать: не нравится

»
10 лет назад, # |
Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

No it doesn't.
UPD: I suddenly realised I might've been wrong. I do have problems with --std=gnu++11 but, apparently, there's no such problem with --std=c++11.

»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

you may check it in the Standard but as far as I remember it's now in standard so it should work in every compliant compiler.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Not that this means much when mingw is notoriously non-compliant. Ever tried printing long doubles? (Also, for some reason, you have to read doubles with %lf and print with %f, even though they should be equivalent).

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Strangely, it works on every compiler on Codeforces

P.S. WIN32 is defined, as I see

»
10 лет назад, # |
  Проголосовать: нравится +21 Проголосовать: не нравится

It works. Even -std=c++11 -Wpedantic gives no warnings. It seems that the code is correct in ISO C++ 2011 Standard.