Komentarze (7)

wielkaberta

@vrkr Bool nie ma warunku definicji rozmiaru, ponieważ rozmiary typów całkowitych też nie mają gwarancji być zawsze takie same. Ma tylko następujące wytyczne:


  • wartości boolean są tego samego rozmiaru przy porównywaniu

  • jest prawdą jeśli wartość jest niezerowa


Taka minimalna logika pozwala różnym językom implementować to jak chcą, dając użytkownikowi tryb "tak bardzo wyjebane" ja tylko używam true i false i am w d⁎⁎ie jak kompilator robi.

ZohanTSW

@wielkaberta ale w praktyce najczęściej zajmuje tego bajta

Jeśli nie robi się w embedded lub nie pracuje się z jakimiś bardzo małymi klockami to w ogóle wszyscy mogą mieć to w dupie xd

wielkaberta

@ZohanTSW Znaczy się ewaluacja/kalkulacja tej wartości w rejestrze można zredukować do jednego bajta. Bo jest cwany trick by upchać 8 boolów w bajcie .

A potem ktoś potrzebuje boola wypromować do enuma XDDDD

TRPEnjoyer

Sorry, ale tzw padding istnieje nie bez powodu, baba jak zwykle robi problem z niczego.

wielkaberta

@TRPEnjoyer Padding to wyrównywanie w strukturze przez dodawanie bajtów w strukturze by łatwiej było dobierać się do zmiennych w kodzie maszynowym..

To co mówisz, to jest "promowanie" i sobie takie rvalue "true" sobie maszynowo zamieni na inta.

osn_jallr

Ale struktura 8 booli nie musi zajmować 8 bajtów.

wielkaberta

@osn_jallr Tak, ale ewaluacja danego boola z bitmaski, na przykład "bitmask & 1<<5" to w rejestrze procesora musi zająć conajmniej jeden bajt. Niżej nie da rady.

Zaloguj się aby komentować