языке С для представления true применяется 1, а для представления false — 0.
• _Bool — ключевое слово для этого типа. Он является типом int без знака и должен быть настолько большим, чтобы обеспечить хранение значений из диапазона от 0 до 1.
Как это понимать? Почему он должен быть большим если там всего 0 и 1. Для этого же хватит и бита
а где ты бит хранишь-то?
битов не существует, есть только байты
байт же всё равно не много
а байт ты где хранишь?
ну тут уже встают вопросы в выравнивании/легаси/машинные слова и прочее
не понимаю вопроса. в памяти храню наверное
а чем оперирует процессор? не регистрами?
а вас формулировка "настолько большим" смутила или чего?
да, не понимаю в каком смысле. есть типы 16, 32, 64. char 1 байт. Если в Bool тоже 1 байт, то это же нельзя назвать большим
"настолько большим" == "достаточно большим" в данном случае
Разве в с++ гдето сказано что true это 1 ?
Все, нашел, действительно. http://eelis.net/c++draft/conv.prom#6
Там про си
the type bool can be converted to int with the value false becoming 0 and true becoming 1.
Любая переменная языка должна быть адресуема. Это значит, у каждой переменной должен быть адрес, причём такой, чтобы он отличался от адресов других переменных. Это вообще не С даже, а базовые понятия архитектуры вычислительных машин. Как ты при таких условиях будешь адресовать бит -- не понятно...
благодарю за то что попробовали объяснить, но я не понимаю, что вы говорите, как и многое что написано в этой главе.
Минимальная единица адресации памяти в любой ЭВМ -- байт, или так называемое машинное слово. Байт -- это традиционное название машинного слова длиной в 8 бит. Бывают другие размеры байтов (больше или меньше 8бит). Но меньше байта компьютер адресовать не может. Любая переменная языка, поскольку она должна размещаться в памяти, может быть только кратна по размеру байту: один байт, два байта, три байта и так далее. Меньше байта переменная быть не может.
я думал Слово это 16 байт, два слова 32 байта, четыре слова 64 байта. Нет?
ещё раз. _Bool беззнаковый целый, обеспечивающий как минимум хранение двух значений 0 и 1, и , естественно, не менее байта, потому что менее байта не бывает. Собственно, тут и говориться, что это == unsigned char
СЛОВО -- это минимально адресуемая единица памяти. (к С и С++ это никакого отношения не имеет)
Обсуждают сегодня