Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ błąd wyniku przy działaniach z użyciem #define

Ostatnio zmodyfikowano 2014-12-03 23:42
Autor Wiadomość
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:

C/C++
#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?


P-122136
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;
P-122138
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.
P-122139
akwes
» 2014-12-03 23:35:28
Dodawanie nie działa dlatego, że masz tam takie coś:

C/C++
double s2 = DZIESIEC + trzy;
Co jest zamieniane zgodnie z:
C/C++
#define DZIESIEC 10;
na
C/C++
double s2 = 10; + 3;
Twoją wartością dla DZIESIEC jest "10;"
P-122140
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 :)
P-122142
« 1 »
  Strona 1 z 1