vak: (Default)
[personal profile] vak
Если сложить два bool, какой тип получится?

Или, что напечатает эта программа?
std::cout << sizeof(true + true);

Date: 2021-10-16 23:18 (UTC)
ircicq: (Default)
From: [personal profile] ircicq
предположу что int, т.к. к которому приводятся bool
хотя может быть и char
то есть напечатает 1 или sizeof(int)

Date: 2021-10-17 02:24 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

А почему вообще разрешено складывать булевы?

Date: 2021-10-17 02:57 (UTC)
ircicq: (Default)
From: [personal profile] ircicq
цепь причин:
Потому что можно в Си
в Си можно для совместимости, потому что раньше не было типа bool (появился в C99), а эмулировался через #define

Date: 2021-10-17 08:33 (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Чтобы было чем заняться в состоянии "Готово 90%".

Date: 2021-10-17 09:49 (UTC)
tiresome_cat: (CuriousCat)
From: [personal profile] tiresome_cat
С точки зрения компилятора это целочисленный тип данных. Почему бы и не сложить?

Date: 2021-10-17 13:01 (UTC)
euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)
From: [personal profile] euthanasepam
Так шо, получится 2? :)

Отставить, проглядел там sizeof.
Edited Date: 2021-10-17 13:04 (UTC)

Date: 2021-10-17 13:57 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Это нелепая точка зрения. Сложить фигня; а ведь и делить можно. false / true.

Вспомнил, конечно, старые времена.

#define false 1
#define true 1

Date: 2021-10-17 14:07 (UTC)
tiresome_cat: (SmilingCat_2)
From: [personal profile] tiresome_cat
Если уж и делить, то true/false :)

Date: 2021-10-17 14:19 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Вот она, троичная логика. #define undefined = true/false - при условии, что ложь мы объявим нулем.

Date: 2021-10-17 17:57 (UTC)
tiresome_cat: (SmilingCat_2)
From: [personal profile] tiresome_cat
Впервые вижу так ясно изложенное определение понятия "ХЗ".

Date: 2021-10-17 10:46 (UTC)
From: [personal profile] caztd
"If an int can represent all values of the original type (as restricted by the width, for a bit-field), the value is converted to an int; otherwise, it is converted to an unsigned int. These are called the integer promotions. Integer promotions preserve the value, including the sign."

Это конечно наследие Си. Если же нужен тип, который нельзя складывать,
то можно просто написать свой класс. Хотя редко кто заморачивается.
Edited Date: 2021-10-17 10:50 (UTC)

Date: 2021-10-17 16:01 (UTC)
From: [personal profile] dijifi
Потому, что прикладная математика — совсем не математика. Профессор в свое время шутил, что это напоминает фонвизинскую дверь прилагательну.

Date: 2021-10-17 16:24 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Ну это-то да; полутипизированный язык. 30 лет назад это выглядело нормально; сейчас смешно.

Date: 2021-10-17 16:30 (UTC)
From: [personal profile] dijifi
40 лет назад все можно было окинуть мысленным взором, а лет за десять до этого одни и те же люди писали и численные методы и бухгалтерию (преп рассказывал). Теперь все специалисты. К пуговицам претензии есть?

Date: 2021-10-17 16:51 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Ну ведь у все специалистов все равно есть квалифицированные мнения по всем вопросам. Особенности профессии. Вот я не слыхал, чтобы рэпер рассуждал о Бахе или даже о Колтрейне.

Date: 2021-10-17 16:57 (UTC)
From: [personal profile] dijifi
что делать с квалифицированным мнением маляра (в свей узкой специальности) о добавлении белил к сурику и бакану?

Я уверен что найдется рэпер с мнением о Бахе. А о стереотипном рэпере в вакууме у меня мнения нет.

Date: 2021-10-17 17:10 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Не будучи специалистом ни в той ни в другой области, могу только вздохнуть.

Date: 2021-10-17 03:29 (UTC)
ccpro: (Default)
From: [personal profile] ccpro
предполагаю, что true определно как int16, тогда должно вывести 4

Date: 2021-10-17 03:53 (UTC)
ircicq: (Default)
From: [personal profile] ircicq
Все знакомые реализации C++ экономно представляют bool одним байтом.
Но неявный кастинг приоритетно в сторону int.
Edited Date: 2021-10-17 03:54 (UTC)

Date: 2021-10-17 03:56 (UTC)
ccpro: (Default)
From: [personal profile] ccpro
я всё же к int склоняюсь

Date: 2021-10-17 07:50 (UTC)
mopexod: (Default)
From: [personal profile] mopexod
Думаю, напечатает '4'.
Ну, от битности системы, конечно, зависит, может и '2'. Но в современном мире, в основном, '4'.

Date: 2021-10-17 08:10 (UTC)
dluciv: (Default)
From: [personal profile] dluciv

sizeof(int), думается мне. На современных машинах скорее всего 4.

Date: 2021-10-17 08:17 (UTC)
dluciv: (Default)
From: [personal profile] dluciv

С точностью конечно до того, что это не программа %)

Date: 2021-10-17 09:40 (UTC)
vlad_m: (Default)
From: [personal profile] vlad_m
Ставлю на 4 (sizeof(int))

Date: 2021-10-17 12:42 (UTC)
From: [personal profile] qse

Date: 2021-10-17 17:11 (UTC)
From: [personal profile] dijifi
8 не может быть, потому что нет дураков переписывать стандартные библиотеки. 4 или 2 с -m16 например

Date: 2021-10-17 18:11 (UTC)
mdmx: (Default)
From: [personal profile] mdmx

Date: 2021-10-17 21:30 (UTC)
henry_flower: A melancholy wolf (Default)
From: [personal profile] henry_flower
сподіваюсь, то є не питання для співбесіди

[cling]$ __x86_64__
(int) 1
[cling]$ sizeof(true + true)
(unsigned long) 4
[cling]$ sizeof(true)
(unsigned long) 1