Programowanie w języku C/C++

Bool

  • 2008-04-26 19:44
  • 6 komentarzy
  • 48314 odsłon
  • Oceń ten tekst jako pierwszy
Bool jest typem logicznym. Przyjmuje wartość true lub false. Wartości typu bool możemy używać np. w sterownikach pętli, różnego rodzaju przełącznikach, itp.

Przykłady


bool wlacznik1 = true;
bool wlacznik2 = false;
 
if(wlacznik1 == true)
{
  // instrukcje
}
 
if(wlacznik2 == false)
{
  // instrukcje
}


Informowanie o poprawnym wykonaniu funkcji:

bool funkcja()
{
  // wykonaj działanie
  // ...
  return true; // funkcja została wykonana prawidłowo
}
 
int main()
{
  if(funkcja() == true) // inaczej: if(funkcja())
  {
    // poprawne wykonanie
  } 
  else
  {
    // błędne wykonanie funkcji
  }
}


Aby sprawdzić, czy dana zmienna równa się true bądź false, można napisać po prostu:

if( funkcja() ) // == true
if( !funkcja() ) // == false

Definicja typu bool dla języka ANSI C


Ponieważ w czystym języku C nie istnieje typ danych bool, zazwyczaj trzeba do tego celu użyć zmiennej całkowitej (1 - true, 0 - false). Można jednak, za pomocą typedef, stworzyć własną, skróconą definicję typu enum:

#include <stdio.h>
#include <ctype.h>
 
  typedef enum {TRUE = 1, FALSE = 0} bool;
 
int main()
{
  char c;
  bool dig;
 
  printf("Podaj jakis znak z klawiatury, a powiem, czy zostala podana cyfra\n");
  scanf("%c", &c);
  dig = isdigit(c) == 0 ? FALSE : TRUE;
  if ( dig == TRUE )
    printf("Podana zostala cyfra\n");
  else
    printf("Podany zostal znak niebedacy cyfra\n");
}

Standard wymaga, by nazwy stałych w języku C pisane były wielkimi literami, stąd FALSE oraz TRUE. Mimo to, nie będzie dużym błędem, jeśli ktoś użyje małych liter, tak jak to ma miejsce w C++.

Zobacz też


6 komentarzy

Brak avatara
program 2013-10-21 17:24

i have no idea what i m doing

manfredek 2009-04-03 19:26

Ale BOOL z WinAPI jest intem.

crayze 2008-04-27 11:09

warto także wspomnieć, że BOOL zdefiniowany w plikach WinAPI także zajmuje 4bajty na win32

JaskMar 2007-08-11 11:22

Bo adresy w pamięci są grupowane po jednym bajcie, a nie bicie. Więc komputer nie umiałby znaleźć w pamięci 6 bitu w 54829 bajcie.

Mądrzejsze pytanie:
Dlaczego tablica bool a[8] zajmuje 8 bajtów, a nie 1. No cóż - to jedna z nielicznych wad C++

ffrreeaakk 2007-01-02 00:02

Ja mam pytanie:
Czemu zmienna typu bool zajmuje w pamięci AŻ 1B skoro na chłopski rozum wystarczyłby na to 1b ?
:)

marcinEc 2006-04-22 14:47

To nie do końca jest tak... Wg. standardu konwersja: bool -> int daje:
false = 0
true = 1

Odwrotna konwersja, np. float -> bool:
0 = false
!=0 = true