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

Автор MakCoder, 13 лет назад, По-русски
scanf("%I64d", &n);

x = sqrt(n);
cout<<x;

printf("\n%I64d", int(sqrt(n)));


если в input'е вести допустим "10000" то в output'е будет

"100

 100" но если в том же пасе убрать строку сout<<x;

то пас будет таков

scanf("%I64d", &n);

x = sqrt(n);

printf("\n%I64d", int(sqrt(n)));

и ответ на тот же тест будет

"

8630582025050390628"

почему???

 


  
  • Проголосовать: нравится
  • -15
  • Проголосовать: не нравится

13 лет назад, # |
Rev. 3   Проголосовать: нравится +1 Проголосовать: не нравится
printf("\n%I64d", (long long)sqrt(x)); - вот так у меня заработало
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +10 Проголосовать: не нравится

    printf("\n%I64d", (int)sqrt(x)); - а вот так уже нет, очевидно, дело в том, что аргумент должен быть long long

13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
printf со стека берет необходимое количество байт, определенной спецификациями вывода. 

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А почему тогда может не работать вариант с cout? У меня он тоже выводит ерунду. g++ 4.4.3
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

не понимаю почему же без cout'a printf выводит не правильно?? а с ним правильно