Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Implayingdota
0 / 0 / 0
Регистрация: 07.08.2013
Сообщений: 21
1

Вывод на экран значений signed от unsigned

21.10.2015, 10:19. Просмотров 847. Ответов 4
Метки нет (Все метки)

Здравствуйте! Помогите разобраться с выводом значений signed и unsigned. Я знаю что это знаковые и беззнаковые. Вот например:
C
1
2
3
4
5
unsigned char unsigned_value = 0xff; /* Значение в десятичной системе 255 */
char signed_value = 0xff; /* значение в десятичной системе -1 */
 
printf("%02x\n", unsigned_value); /* 0xff */
printf("%02x\n", signed_value); /* 0xffffffff */
Почему у меня разные выводы printf, а sizeof(unsigned_value) == sizeof(signed_value) == 1.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2015, 10:19
Ответы с готовыми решениями:

Разобрать код с signed unsigned
Прошу помочь разобраться signed char sc; signed short int ssi; signed int...

Представление типа как signed/unsigned
Подскажите, пожалуйста, если для представления типа данных как signed отвечает...

Каким бы стоило сделать тип char по умолчанию — signed или unsigned?
Появился такой вопрос: каким бы стоило сделать тип char по умолчанию - signed...

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

Ошибка W8012: "Comparing signed and unsigned values"
void init() { int j; gotoxy(x,menuitem+9); MODE_8; ...

4
CoderHuligan
805 / 489 / 200
Регистрация: 30.06.2015
Сообщений: 2,707
Записей в блоге: 9
21.10.2015, 12:25 2
C
1
2
3
4
5
unsigned char unsigned_value = 0xff;  
char signed_value = 0xff; 
 
printf("%u\n", unsigned_value); 
printf("%d\n", signed_value);
0
Implayingdota
0 / 0 / 0
Регистрация: 07.08.2013
Сообщений: 21
21.10.2015, 13:59  [ТС] 3
Я наверное не точно задал вопрос. Мне не надо выводить их в десятичном представлении, меня интересует, почему при выводе в шестнадцатизначной системе исчисления ( printf("%02x\n") ) я получаю вывод 0xff ff ff ff, а не 0xff.
0
CoderHuligan
805 / 489 / 200
Регистрация: 30.06.2015
Сообщений: 2,707
Записей в блоге: 9
21.10.2015, 17:13 4
Цитата Сообщение от Implayingdota Посмотреть сообщение
Я наверное не точно задал вопрос.
У меня ваш код вообще не компилируется...
0
Evg
Эксперт CАвтор FAQ
19306 / 7161 / 533
Регистрация: 30.03.2009
Сообщений: 20,042
Записей в блоге: 30
21.10.2015, 18:37 5
Лучший ответ Сообщение было отмечено Implayingdota как решение

Решение

Причина в том, что ты подаёшь формат %x, который предполагает, что будет передано значение типа unsigned int. По факту передаётся int (см. тут Распространенные ошибки), но это немного в сторону от темы. Лечится тем, что нужно передавать формат, соответствующий char'у

C
printf("%02hhx\n", signed_value);
Шпаргалка тут http://www.cyberforum.ru/blogs/18334/blog507.html
1
21.10.2015, 18:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2015, 18:37

Тип signed char и unsigned char
Есть путаница в типах данных в Си signed char и unsigned char. Если объявить...

Некорректны вывод unsigned char.
Здравствуйте. Есть код, вот он: #include "stdafx.h" #include <stdio.h>...

Добавить вывод на экран адресов всех переменных, а в конец – значений всех переменных
Никак не могу найти ошибки.И еще, в начало программы добавить вывод на экран...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru