Обсуждение файла:Printf stack lack.svg
Последнее сообщение: 15 лет назад от Achp ru в теме «Рисунок некорректен»
![]() | Эта страница выставлялась на удаление и была оставлена. Пояснение причин и соответствующее обсуждение вы можете найти на странице Википедия:К удалению/21 октября 2010. Повторное выставление допустимо лишь при наличии аргументов, не рассмотренных в прошлых номинациях, при изменении обстоятельств вокруг предмета статьи или изменении правил Википедии, в противном случае повторная заявка будет быстро закрыта. |
Рисунок некорректен
правитьС точки зрения языка Си/Си++ рисунок содержит некорректность. Фактические параметры (int)0x11223344
и 'b'
оба имеют один и тот же тип int. Как же может выходить, что они имеют разный размер?--achp 22:11, 14 сентября 2008 (UTC)
- Поясните, как это? sizeof('b') = один (максимум, два) байта. #!George Shuklin 10:07, 15 сентября 2008 (UTC)
- Во-первых в Си выражение
'b'
вообще изначально имеет тип int (в последнем стандарте п. 6.4.4.4, абзац 10; правило существует со времён Кернигана и Ритчи).--achp 12:13, 15 сентября 2008 (UTC)
- Во-первых в Си выражение
- Во-вторых и в Си, и в Си++ для фактических параметров, соответствующих
...
-части сигнатуры, проводится процедура стандартного продвижения типов аргументов (в стандарте Си++ п. 5.2.2, абзац 7), то есть в данном случае целочисленного продвижения. Эта процедура описана в п. 4.5; абзац 1 указывает, что значение типа char преобразуется к типу int, если тип int способен вместить все значения, которые может принять char, unsigned int в ином случае.--achp 12:13, 15 сентября 2008 (UTC)