C++ błąd wyniku przy działaniach z użyciem #define
Ostatnio zmodyfikowano 2014-12-03 23:42
traczu120 Temat założony przez niniejszego użytkownika |
C++ błąd wyniku przy działaniach z użyciem #define » 2014-12-03 23:14:58 Mówiąc krótko, oto mój kod: #include <iostream>
using namespace std;
#define DZIESIEC 10; const int trzy = 3;
int main() { double test = DZIESIEC double s1 = DZIESIEC + trzy; double s2 = trzy / DZIESIEC; cout << test << endl; cout << trzy << endl; cout << s1 << endl; cout << s2 << endl; return 0; } Po skompilowaniu na ekranie ukazuje mi się: 10 3 10 0 A według mnie powinno być: 10 3 13 0.3 I teraz moje pytanie czy coś ja źle napisałem, lub tego tak się nie pisze, czy może coś z moim kompilatorem (Code::Block 13.12 GNU GCC Compiler) jest nie tak? |
|
akwes |
» 2014-12-03 23:22:19 Dowiedz się coś o dzieleniu całkowitym. Jeżeli dzielisz dwa typy całkowitoliczbowe to zostanie użyty operator dzielenia całkowitoliczbowego. Popatrz sobie na różnicę w std::cout << 3 / 2 << " " << 3.0 / 2.0; |
|
traczu120 Temat założony przez niniejszego użytkownika |
» 2014-12-03 23:25:25 No dobrze a co z linijką gdzie znajduje się dodawanie?
EDIT: Rzeczywiście po przerobieniu na 10.0 i 3.0 wynik to 0.3. |
|
akwes |
» 2014-12-03 23:35:28 Dodawanie nie działa dlatego, że masz tam takie coś: double s2 = DZIESIEC + trzy;
Co jest zamieniane zgodnie z: na Twoją wartością dla DZIESIEC jest "10;" |
|
traczu120 Temat założony przez niniejszego użytkownika |
» 2014-12-03 23:42:54 Hah no tak, teraz wszystko jasne jednakże pisząc praktycznie przepisałem kod z "Symfoni C++" gdzie było to ćwiczeniem po rozdziale. W prawdzie chodziło o to która linijka pokaże błąd kompilacji (double s3 = DZIESIEC / trzy), to ten średnik znajduje się także w książce (#define DZIESIEC 10;). Choć patrząc z drugiej strony się zgadza ponieważ mimo iż obliczenia są "błędne" to program się kompiluje. Dziękuję za szybką odpowiedz i pomoc w znalezieniu (mojego?) niedopatrzenia :) |
|
« 1 » |