Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 169
1

Char unsigned char signed char длинна Кааак

09.05.2018, 18:46. Просмотров 1555. Ответов 8
Метки нет (Все метки)

Здравствуйте.

C++
1
2
    char l[2] = {0,0};
    l[0] = 0xff;
Почему, меня, компилятор не посылает куда подальше. Нет он конечно предупреждает и записывает ff в первый элемент, но как?


и тут
C++
1
2
3
    unsigned char l[2] = {0,0};
    l[0] = -1;
    l[1] = 255;
переменные l[0] == l[1]. тоже не понятно.

Компилятор такой умный?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2018, 18:46
Ответы с готовыми решениями:

Значения типов данных (signed, unsigned, char)
Програмирую я месяца два,но не понимаю значения типов данных : signed, unsigned, char...Помогите..

Тип char.Signed/unsigned.Отличие типов данных.
Вопрос немного может быть не туда... Прошу прощения. Пишу прошивку к контроллеру, на С. Интересует...

Разница между char и signed char
Не понимаю в чем разница между char и signed char, ведь char по умолчанию знаковый. Не...

Сделать преобразование unsigned char в char, а затем типу int
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char -...

8
(80 / 20 || 50 / 50) = x
1599 / 1083 / 417
Регистрация: 16.08.2014
Сообщений: 4,537
Записей в блоге: 1
09.05.2018, 18:51 2
MINO, тебе нужно вникнуть в тему "предоставление чисел в эвм"
0
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 169
09.05.2018, 18:54  [ТС] 3
Кажется понял, Char unsigned char signed char это абстракция и в итоге диапазон у всех этих переменных от 0 до 255.

Я правильно понял?

и писав вот это
C++
1
2
3
 
char l[2] = {0,0};
l[0] = 0xff;
он преобразует в свои байты
0
(80 / 20 || 50 / 50) = x
1599 / 1083 / 417
Регистрация: 16.08.2014
Сообщений: 4,537
Записей в блоге: 1
09.05.2018, 18:58 4
Лучший ответ Сообщение было отмечено MINO как решение

Решение

Цитата Сообщение от MINO Посмотреть сообщение
Я правильно понял?
правильно. данные и информация это разные вещи, одни и те же данные при различных интерпретациях могут нести разную информацию.

Добавлено через 1 минуту
Цитата Сообщение от MINO Посмотреть сообщение
он преобразует в свои байты
у него нет своих байтов, они все твои

Добавлено через 41 секунду
ты программист, за компом ты царь и бог
1
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 169
09.05.2018, 19:06  [ТС] 5
l[0]!=l1[0] эти переменные можно ли как то сравнивать байтно?
0
(80 / 20 || 50 / 50) = x
1599 / 1083 / 417
Регистрация: 16.08.2014
Сообщений: 4,537
Записей в блоге: 1
09.05.2018, 19:14 6
Цитата Сообщение от MINO Посмотреть сообщение
сравнивать байтно
физически сравнивать можно все на уровне битов, бит либо есть либо нет, а вот логически система типов не даст этого сделать.
1
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 169
09.05.2018, 19:17  [ТС] 7
Цитата Сообщение от _stanislav Посмотреть сообщение
а вот логически система типов не даст этого сделать.
жаль
0
(80 / 20 || 50 / 50) = x
1599 / 1083 / 417
Регистрация: 16.08.2014
Сообщений: 4,537
Записей в блоге: 1
09.05.2018, 19:21 8
Цитата Сообщение от MINO Посмотреть сообщение
жаль
это плюс, а не минус, система типов предотвращает не желательные операции для типов. если тебе нужно сравнить два разных типа используй привидение, кстати оно считается самой крайней мерой, то есть не желательной.
0
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 169
09.05.2018, 19:25  [ТС] 9
Спасибо за разъяснения.

Добавлено через 1 минуту
Цитата Сообщение от _stanislav Посмотреть сообщение
кстати оно считается самой крайней мерой
Да но это лишняя операция.

Это все конечно не критично, но основы надо знать для просветления.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2018, 19:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Надо перевести переменную типа unsigned char* в signed int и обратно
у меня есть переменная типа unsigned char*, мне нужно перевести ее в signed int , провести...

Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ?
Ну собственно сабж... std::fstream fs; fs.write((char*)..) В случае бинарного потока я допустим...

Неверная конверсия из char* в unsigned char*
Здравствуйте. Почему-то ловлю ошибку, гласящую о том, что не удалась конверсия из char* в *unsigned...

Приведение типов unsigned char[2] to unsigned char [64]
Добрый день! Подскажите пожалуйста, как поступить. Есть простая функция main int main() { ...


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

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

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