Wpis z mikrobloga

@mikra25: bool
skoro zapytałeś, to warto dodać, że np. klasa std::vector zachowuje się inaczej dla typu bool niż dla innych (np. optymalizuje wykorzystanie pamięci, do czego nawiązał @Kaczus2B). Słowem kluczowym jest tu klasa proxy. Dobra odpowiedź na stacku, do poczytania:
http://stackoverflow.com/a/15927037/4169253

Jeszcze co do wykorzystania pamięci, jeżeli już inny typ, to lepiej char - 1 bajt zamiast 4 jak w przypadku typu int.
@Kaczus2B: Dlaczego mówisz, że zajmują tyle samo? Deklarując inta, automatycznie rezerwujesz na niego 4 bajty, używając boola masz tylko jeden bajt. Może się wydawać, że nie jest to duża różnica, ale przy programowaniu np. AVRów czy innych PICów, czyli w momencie gdy optymalizacja jest kluczowa, te kilka bajtów różnicy to jest być albo nie być dla działania całego programu.
@Kaczus2B: No ale chyba właśnie nie zajmą tyle samo. Przecież jeżeli deklarujesz zmienną, to musi zostać dla niej zarezerwowana przestrzeń w pamięci. Jeżeli deklarujesz inta to musi to być 4 bajty. Nie ma opcji, żeby zarezerwowany został jeden bajt lub dwa bajty, bo w każdym momencie może wartość tej zmiennej zostać zmieniona, bo przecież jest to zmienna. Gdyby to była stała to faktycznie kompilator mógłby dokonać optymalizacji, ale ponieważ jest to
@mikra25: Zgodnie z tą logiką, należy zrezygnować z każdego feature'a, którego nie ma jakiś inny język, a więc musisz jednoczenieśnie wywalić pętlę for, pętlę while, pętlę do-while, wyjątki, goto, rekurencję i nagle C++ przestaje być kompletny w sensie Turinga.
@DanielW: int wcale nie musi mieć 4 bajtów.
Z dokumentacji "sizeof(bool) is not required to be 1" W książce Strostrupa znajdziemy natomiast:
1<=sizeof(bool)<=sizeof(long)
Sama wielkość w dokumentacji jest "implementation defined"
Int nie zawsze zajmuje 4 bajty - ba w dawnych czasach standardem było, ze zajmowal 2 bajty
@Kaczus2B: To wiem, że rozmiar jest kwestią umowną, nic nie stoi na przeszkodzie abyś w swoim własnym języku ustalił zupełnie inne rozmiary swojego inta i boola. Ale obecnie przyjmuje się, że int ma 4, bool 1, bo tak jest w popularnych językach. Bez względu na to co zostanie w tych zmiennych zawarte, ich typ narzuca rozmiar jaki zostanie zajęty w pamięci. Zatem przypisywanie intowi wartości, które można przypisać do boola to
@DanielW: Bzdura - jak chcesz mieć inta 4 bajtowego uzywasz int32_t int ma jedynie spelniac zależność:
sizeof(short)<=sizeof(int)<=sizeof(long) a z 4 bajtowymi boolami juz się spotkałem, któryś z kompilatorów tak miał, po to aby szybko był przetwarzany. Jeśli chodzi o moja wypowiedź, może się zapędziłem, powinienem napisać mogą zajmować tyle samo i czasami zajmują.