Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 18.01.2019
Сообщений: 2
1

Размер типов данных. Почему выводится разный результат для unsigned short и short

29.04.2019, 05:15. Показов 3653. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Обе переменных (usSh и Sh) размером 2 байта. С выводом значения переменной usSh все понятно. Подскажите, пожалуйста, почему переменная Sh имеет такое значение? Почему выводится больше 2 байт?

C
1
2
3
4
5
6
7
8
9
10
11
unsigned short usSh;
short Sh;
 
printf("sizeoff a=%d\n", sizeof(usSh));
printf("sizeoff a=%d\n", sizeof(Sh));
 
usSh=0xFF<<8;
Sh=0xFF<<8;
 
printf("usSh=%x\n", usSh);
printf("Sh=%x\n", Sh);
Миниатюры
Размер типов данных. Почему выводится разный результат для unsigned short и short  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2019, 05:15
Ответы с готовыми решениями:

Размер для данных (int, char, long, double, short, unsigned, float)
Напишите программу, которая будет определять размер для данных (int, char, long, double, short,...

Макс/мин значения short/unsigned short
Задача из книжки &quot;Objective-C: The Big Nerd Ranch Guide 2ed&quot;, но сначала там объясняют просто Си....

Напишите программу, которая будет определять размер для данных (int, char, long, double, short, unsigned, float) и выводить информацию
1. Какие типы данных лучше всего использовать для хранения следующих значений: а) возраст человека...

Почему такой вывод (sizeof(short + short) - 4)
int _tmain(int argc, _TCHAR* argv) { short a = 3; short b = 5; cout &lt;&lt; sizeof(a) &lt;&lt; endl;...

3
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,488
Записей в блоге: 1
29.04.2019, 05:25 2
C
1
2
3
4
5
6
    printf("usSh=%hu\n", usSh);
    printf("Sh=%hd\n", Sh);
 
 
    printf("usSh=%hx\n", usSh);
    printf("Sh=%hx\n", Sh);
читал http://www.cplusplus.com/reference/cstdio/printf/
1
0 / 0 / 0
Регистрация: 18.01.2019
Сообщений: 2
29.04.2019, 08:32  [ТС] 3
Со спецификатором понятно, я руками указываю длину. Не понятно почему в моем варианте в одном случае выводится 2 байта а в другом случае выводится 4 байта.
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,488
Записей в блоге: 1
29.04.2019, 13:13 4
Лучший ответ Сообщение было отмечено GenkaPalych как решение

Решение

GenkaPalych, ненене - формат вывода %х означает не только систему счисления, но и то, сколько байт в выводимой переменной. Нужно указывать в форматной строке те форматы, что соответствуют её типу и размеру.
Ты вывел в формате %x и твои шорты тогда сконвертировались в 4хбайтные intы.

Так Sh=0xFF<<8; какое это число в десятичной? Ну конечон -256! (ты же так и думал? ты же не хотел сказать, что FF00 это 65280?)
А как будет -256 в шестнадцатеричной если выводить в формате 4хбайтных(нет %h) int ов? FFFFFF00
1
29.04.2019, 13:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2019, 13:13
Помогаю со студенческими работами здесь

Определение диапазонов переменных типов char, short, int и long (как signed, так и unsigned)
Вроде до этого все читал внимательно, задание понимаю, как реализовать - не знаю. С только начал...

Разница int, short, unsigned int, unsigned short
Есть например цикл который проходит по массиву в котором 100 элементов. В чем практическая выгода...

Для типа данных unsigned short обеспечить возможность доступа как к числу целиком, так и отдельно к его битам
Есть такое задание &quot;Для типа данных unsigned short обеспечить возможность доступа как к числу...

Длина short[] - Почему размер массива внутри make отличается?
Доброе время суток, господа. #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru