PRZYKŁADOWE ZADANIE Z KSIAZKI

PRZYKŁADOWE ZADANIE Z KSIAZKI
ZA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:10
0

(Jak cos to sie dopiero zaczalem tego uczyc, nie hejtujcie xd)
Mam przykład programu z użyciem podstawowych typow danych, przepisuje go 1 do 1, wyświetla te wartości, ale mimo wszystko pokazuje jakieś błędy. W czym może byc problem?

Kopiuj
#include <stdio.h>
#include <stdio.h>
int main(void)
{
	int integerVar = 100;
	float floatingVar = 331.79;
	double doubleVar = 8.44e+11;
	char charVar = 'W';


    _Bool boolVar = 0;


	printf("IntegerVar = %i\n", integerVar);
	printf("floatingVar = %f\n", floatingVar);
	printf("doubleVar = %e\n", doubleVar);
	printf("doubleVar = %g\n", doubleVar);
	printf("charVar = %c\n", charVar);

	printf("boolVar = %i\n", boolVar);

	return 0;
}
edytowany 2x, ostatnio: kq
Tasmanian Devil
"Twój post prawdopodobnie zawiera niesformatowany kod - nie wklejaj bezpośrednio kodu, ale obejmuj go w odpowiednie znaczniki! (jestem botem, ten komentarz został dodany automatycznie)"
Patryk27
Jakie błędy?
MarekR22
To nie jest C++ tylko C, jak powołujesz się na książkę to podaj tytuł i autora.
ZA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:10
0

Ważność Kod Opis Projekt Plik Stan pominięcia
Błąd (aktywny) E0020 identyfikator "_Bool" jest niezdefiniowany ConsoleApplication11 C:\Users\Użytkownik\source\repos\ConsoleApplication11\ConsoleApplication11\ConsoleApplication11.cpp
Ważność Kod Opis Projekt Plik Stan pominięcia
Ostrzeżenie C4305 "inicjowanie": obcięcie z "double" do "float" ConsoleApplication11 C:\Users\Użytkownik\source\repos\ConsoleApplication11\ConsoleApplication11\ConsoleApplication11.cpp
Ważność Kod Opis Projekt Plik Stan pominięcia
Błąd C2065 "_Bool": niezadeklarowany identyfikator ConsoleApplication11 C:\Users\Użytkownik\source\repos\ConsoleApplication11\ConsoleApplication11\ConsoleApplication11.cpp
Ważność Kod Opis Projekt Plik Stan pominięcia
Błąd C2146 błąd składniowy: brakuje „;” przed identyfikatorem „boolVar” ConsoleApplication11 C:\Users\Użytkownik\source\repos\ConsoleApplication11\ConsoleApplication11\ConsoleApplication11.cpp
Ważność Kod Opis Projekt Plik Stan pominięcia
Błąd C2065 "boolVar": niezadeklarowany identyfikator ConsoleApplication11 C:\Users\Użytkownik\source\repos\ConsoleApplication11\ConsoleApplication11\ConsoleApplication11.cpp
Ważność Kod Opis Projekt Plik Stan pominięcia
Błąd C2065 "boolVar": niezadeklarowany identyfikator ConsoleApplication11 C:\Users\Użytkownik\source\repos\ConsoleApplication11\ConsoleApplication11\ConsoleApplication11.cpp

A tak wgl jak moze mi wywalac bledy z przykladu z ksiazki?

TC
  • Rejestracja:ponad 6 lat
  • Ostatnio:10 miesięcy
  • Lokalizacja:Kraków
  • Postów:49
0

@Zaiker:
Chyba masz literówkę _Bool boolVar = 0;:
Na co zresztą wskazuje błąd. Zamień na bool.

Kopiuj
#include <stdio.h>
#include <stdio.h>
int main(void)
{
  int integerVar = 100;
  float floatingVar = 331.79;
  double doubleVar = 8.44e+11;
  char charVar = 'W';

  bool boolVar = 0;

  printf("IntegerVar = %i\n", integerVar);
  printf("floatingVar = %f\n", floatingVar);
  printf("doubleVar = %e\n", doubleVar);
  printf("doubleVar = %g\n", doubleVar);
  printf("charVar = %c\n", charVar);

  printf("boolVar = %i\n", boolVar);

  return 0;
}

enedil
Lol, to nie jest literówka, po prostu program jest w C, tylko że kompilowany jako C++
enedil
W C istnieje typ _Bool, a nie istnieje bool
enedil
@vpiotr: dziękuję za uświadomienie, niemniej jednak nijak to nie rozwiązuje problemu, że OP uczy się C kompilując jako C++. Przecież to nie może mieć pozytywnych konsekwencji
enedil
Nie rozumiem też jaki jest cel takiej pedanterii. U mnie celem wypowiedzi było uświadomienie, co jest częścią języka (a nie biblioteki standardowej), uwypuklenie że postawiona diagnoza jest błędna, podanie głębszej przyczyny.
enedil
Na co w odpowiedzi dowiaduję się, że istnieje typedef na to? Prawdziwe, ale bezużyteczne
vpiotr
@enedil: napisałeś nieprawdziwe zdanie i to Ty się przypierniczasz do semantyki zamiast rozwiązać problem. Dla przypomnienia: W C istnieje typ _Bool, a nie istnieje bool.
enedil
@vpiotr: no bo typ bool jest częścią biblioteki standardowej, a nie częścią języka. A problemem OPa nie jest to, że nie includuje stdbool.h, tylko to że używa kompilatora C++, a nie kompilatora C. Dodanie #include <stdbool.h> jedynie ukryje ten problem, ale może ujawnić wiele innych potem, bo C i C++ to różne języki.
enedil
Do używania natomiast _Bool, żedne includy nie są potrzebne
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:dzień
  • Postów:1027
0

Dlaczego piszesz w C, a tworzysz projekt C++, i go kompilujesz jako C++?

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
1

Zmień drugą linijkę z:

Kopiuj
#include <stdio.h>

na:

Kopiuj
#include <stdbool.h>
AL
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 3 lata
  • Postów:1493
1

@vpiotr: NIE. Pierwsze co OP powinien zrobić to użyć kompilatora C a nie C++.
A czy kompilator MS wspiera typ _Bool to osobna sprawa.

ZA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:10
0
alagner napisał(a):

@vpiotr: NIE. Pierwsze co OP powinien zrobić to użyć kompilatora C a nie C++.

A czy kompilator MS wspiera typ _Bool to osobna sprawa.

Jak to zrobić?

AL
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 3 lata
  • Postów:1493
0

Najsampierw zmień rozszerzenie pliku z .cpp na .c. Potem będziemy kombinować dalej ;)

enedil
Afaik to jest rekomendowane rozwiązanie xd
AL
@enedil: MSVC ostatnio używałem 10 lat temu także jestem daleki od zajmowania kategorycznego stanowiska ;)
enedil
Ja również dawno temu, ale tak twierdzi odpowiedź na stacku, a jak wiadomo one się nie mylą
ZA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:10
0

@alagner: Zmieniłem

AL
Ale pomogło, nie pomogło? Care to elaborate, please?
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:4 minuty
4
  1. To wygląda na C, a nie na C++ (tag mówi C++) - uściślij to. Jakie masz rozszerzenie pliku źródłowego?
  2. Powołujesz się na książkę. Co to za książka? (pomoże z punktem 1)
  3. Symbole zaczynające się od podkreślania są zarezerwowane i nie powinny być używane lub definiowane Wyjaśnienie _Bool vs bool - generalnie _Bool zostało wprowadzone by zapobiec problemom ze starym kodem napisanym w starszych wersjach standardu C.
  4. Poprawiane na C: https://godbolt.org/z/jqzfcvKW1
  5. poprawione na zgodne z C++: https://godbolt.org/z/59rnhGx74 (w C++ bool jest typem wbudowanym, w C jest zdefiniowane jako makro).

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 6x, ostatnio: MarekR22
AL
Jeszcze bardziej poprawione C: https://godbolt.org/z/6rGf8rTdP (_Bool jest wbudowany od C99, bool to typedef).
vpiotr
W pkt 4 powielony jest (nie)problem z OP - podwojony include.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.