170 похожих чатов

Булевский тип представляет значения true (истина) и false (ложь); в

языке С для пред­ставления true применяется 1, а для представления false — 0.
• _Bool — ключевое слово для этого типа. Он является типом int без знака и должен быть настолько большим, чтобы обеспечить хранение значений из диапазона от 0 до 1.

Как это понимать? Почему он должен быть большим если там всего 0 и 1. Для этого же хватит и бита

20 ответов

12 просмотров

а где ты бит хранишь-то?

битов не существует, есть только байты

None- Автор вопроса
None
байт же всё равно не много

а байт ты где хранишь?

None
байт же всё равно не много

ну тут уже встают вопросы в выравнивании/легаси/машинные слова и прочее

None- Автор вопроса
Anatoly Shirokov
а байт ты где хранишь?

не понимаю вопроса. в памяти храню наверное

None
не понимаю вопроса. в памяти храню наверное

а чем оперирует процессор? не регистрами?

None
байт же всё равно не много

а вас формулировка "настолько большим" смутила или чего?

None- Автор вопроса
Пользователь 61681
а вас формулировка "настолько большим" смутила или...

да, не понимаю в каком смысле. есть типы 16, 32, 64. char 1 байт. Если в Bool тоже 1 байт, то это же нельзя назвать большим

None
да, не понимаю в каком смысле. есть типы 16, 32, 6...

"настолько большим" == "достаточно большим" в данном случае

Разве в с++ гдето сказано что true это 1 ?

N
Разве в с++ гдето сказано что true это 1 ?

Все, нашел, действительно. http://eelis.net/c++draft/conv.prom#6

None- Автор вопроса
N
Разве в с++ гдето сказано что true это 1 ?

the type bool can be converted to int with the value false becoming ​0​ and true becoming 1.

Любая переменная языка должна быть адресуема. Это значит, у каждой переменной должен быть адрес, причём такой, чтобы он отличался от адресов других переменных. Это вообще не С даже, а базовые понятия архитектуры вычислительных машин. Как ты при таких условиях будешь адресовать бит -- не понятно...

None- Автор вопроса
Ilya Zviagin
Любая переменная языка должна быть адресуема. Это ...

благодарю за то что попробовали объяснить, но я не понимаю, что вы говорите, как и многое что написано в этой главе.

None
благодарю за то что попробовали объяснить, но я не...

Минимальная единица адресации памяти в любой ЭВМ -- байт, или так называемое машинное слово. Байт -- это традиционное название машинного слова длиной в 8 бит. Бывают другие размеры байтов (больше или меньше 8бит). Но меньше байта компьютер адресовать не может. Любая переменная языка, поскольку она должна размещаться в памяти, может быть только кратна по размеру байту: один байт, два байта, три байта и так далее. Меньше байта переменная быть не может.

None- Автор вопроса
Ilya Zviagin
Минимальная единица адресации памяти в любой ЭВМ -...

я думал Слово это 16 байт, два слова 32 байта, четыре слова 64 байта. Нет?

ещё раз. _Bool беззнаковый целый, обеспечивающий как минимум хранение двух значений 0 и 1, и , естественно, не менее байта, потому что менее байта не бывает. Собственно, тут и говориться, что это == unsigned char

None
я думал Слово это 16 байт, два слова 32 байта, чет...

СЛОВО -- это минимально адресуемая единица памяти. (к С и С++ это никакого отношения не имеет)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
Карта сайта