Program zwraca zły wynik - czy to przez przekroczenie zakresu?

2014-12-21 21:23
0

Czemu ten program podaje zły wynik?

#include <iostream>

using namespace std;
int main()
{
 long long k;
 k=1000000*10000;  
 cout<<k;

   return 0;
}
Następnym razem wątek poleci do kosza, za tak nic nie mówiący tytuł - tym razem poprawiam; - furious programming 2014-12-21 22:13

Pozostało 580 znaków

2014-12-21 21:27
1
  1. O przepełnieniu słyszałeś?
  2. k=1000000*10000LL;

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Pokaż pozostałe 2 komentarze
Może i tak... ale ja się specjalnie lepiej nie czuje, gdy oznaczam coś jako "dużą liczbę", a taka zmiana nie namieszałaby w starszych projektach (no, chyba, że bazowałaby one na UB); Wydaje mi się to trochę jak "throw()" w sygnaturze funkcji. - spartanPAGE 2014-12-21 21:47
W Jave nadał te throw obowiązujące i wydaje mi się ze dobrze się sprawują. - _13th_Dragon 2014-12-21 21:51
w C++* (gdzie usunięcie wymogu jego stosowania nie spowodowało jakichś tragicznych w skutkach zmian) - spartanPAGE 2014-12-21 22:08
To zaproponuj jako zmianę do C++17 ;P - _13th_Dragon 2014-12-21 22:17
Czemu nie... https://groups.google.com/a/i[...]pic/std-proposals/iejkkRCrY0g najwyżej pójdzie na moją głowę kubeł zimnej wody - spartanPAGE 2014-12-22 03:09

Pozostało 580 znaków

2014-12-21 21:30
1

demonstracja:

#include <iostream>
#include <limits>
int main(){
    std::cout << std::numeric_limits<uint64_t>::max() << std::endl; 
    std::cout << 1000000*10000ULL << std::endl;
    return 0;
}
edytowany 5x, ostatnio: spartanPAGE, 2014-12-21 21:32

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0