|
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
|
||||||
Изменить знаковость переменной26.06.2020, 13:54. Показов 6284. Ответов 80
Метки нет (Все метки)
Здравствуйте!
Существует ли возможность в языке Си изменять знаковость переменной? То есть, допустим нужно узнать является ли значение некоторой переменной отрицательным числом, как в следующем примере:
0
|
||||||
| 26.06.2020, 13:54 | |
|
Ответы с готовыми решениями:
80
Изменить имя переменной в зависимости от данных переменной изменить значение переменной
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
||||||||||
| 27.06.2020, 19:40 | ||||||||||
|
так это и есть приведение
0
|
||||||||||
|
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
|
||||
| 27.06.2020, 20:32 [ТС] | ||||
|
ValeryS, так и хочется написать "еще один"
. Шутка конечно же .Все то что вы пишите до этого уже писали. Но я еще раз повторю чтобы не пришлось все перечитывать. Добавлено через 6 минут ValeryS, точнее в последнем примере размер типа конечно не изменился, потому что он совпал. Но изменится, если переменная будет определена например с типом short.
0
|
||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||||||||
| 27.06.2020, 21:15 | |||||||||
|
то что ты пытаешься обозвать знаковостью, это изменение типа
и то и другое int? тем более макросами(источниками багов) это все оформить
0
|
|||||||||
|
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
|
|||||
| 27.06.2020, 21:44 [ТС] | |||||
|
"Знаковость" - это термин, который мне в рамках данного вопроса пришлось придумать, поскольку по другому я не знаю как это назвать. Знаковость - это характеристика целочисленного типа, которая определяет диапозон числа (на ряду с его размером, т.е. не только знаковость определяет диапозон) и возможность хранить отрицательные числа. Т.е., грубо говоря, это те самые signed и unsigned. Дак вот, мой вопрос в следующем: есть ли возможность в языке изменять (в каких-либо выражениях) тип так, чтобы менялась только эта знаковость, а размер типа оставался прежним? Как еще более понятливее объяснять??? Добавлено через 2 минуты Добавлено через 4 минуты Добавлено через 1 минуту
0
|
|||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||
| 27.06.2020, 23:23 | |||
sizeof(unsigned int)==sizeof(signed int)по твоим желаниям sizeof(unsigned int)==sizeof(signed int)+1даже не +1 а +1/8 представим что char 8 бит, что чаще всего и есть, но это не постулат возможно ли это?
1
|
|||
|
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
|
||||
| 27.06.2020, 23:59 [ТС] | ||||
|
0
|
||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
||||
| 28.06.2020, 00:42 | ||||
|
значит и signed int должен быть 32 бита один бит на знак итого 33 бита
0
|
||||
|
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
|
|
| 28.06.2020, 01:26 [ТС] | |
|
ValeryS, дак вы же сами себе противоречите. Я же и написал что размер типа должен оставаться прежним. А вы пишите что у вас тип меняет свой размер с 32 бит на 33 бита (что противоречит моему требованию). Я же именно про размер типа пишу.
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,323
|
|||
| 28.06.2020, 05:10 | |||
|
А вот переход от беззнакового типа к знаковому той же ширины для выполнения знаковых вычислений - это сразу "красный флаг" из-за очевидной опасности переполнения. Такой допустимо только по особой нужде и в тщательно контролируемых ситуациях, т.е. тогда, когда есть уверенность, что диапазон реально используемых значений к переполнению привести не может.
0
|
|||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
||||
| 28.06.2020, 08:05 | ||||
![]() чем тогда не устраивает простое приведение ? -1 во что должно превратится?а 1? а -2?
0
|
||||
|
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
|
||||||||
| 28.06.2020, 15:42 [ТС] | ||||||||
|
Добавлено через 14 минут Добавлено через 7 минут Добавлено через 5 минут Добавлено через 18 минут
0
|
||||||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||||||||||
| 28.06.2020, 16:43 | |||||||||||
|
он может быть приведен, т.е в данной строчке считать что это другой тип, но от этого сам тип не поменяется ![]() 33 бита не устраивает приведение конкретно что нужно? и не своими придуманными терминами а терминами языка Добавлено через 2 минуты только у signed один бит на знак 31 на число а у unsigned 32 бита на число 31 не равно 32 ![]() Добавлено через 4 минуты int прочитать как массив char это что поменять тип
0
|
|||||||||||
|
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
|
||||
| 28.06.2020, 16:53 [ТС] | ||||
|
Добавлено через 4 минуты Добавлено через 2 минуты ValeryS, внимательно перечитайте предыдущие сообщения и только потом возвращайтесь к беседе.
0
|
||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|
| 28.06.2020, 17:00 | |
|
0
|
|
|
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
|
|
| 28.06.2020, 17:00 [ТС] | |
|
ValeryS, имелось в виду что тип может поменяться на этапе разработки, а не во время исполнения. Например, проект решили перенести на другую платформу. Я об этом уже писал не один раз.
0
|
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|
| 28.06.2020, 17:01 | |
|
0
|
|
|
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
|
|
| 28.06.2020, 17:02 [ТС] | |
|
ValeryS, вот, только что я вам пояснил. Другие я думаю в курсе, потому что они это уже читали. Вы нет.
0
|
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|
| 28.06.2020, 17:02 | |
|
0
|
|
|
6 / 6 / 4
Регистрация: 14.01.2016
Сообщений: 164
|
||
| 28.06.2020, 17:04 [ТС] | ||
|
0
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||||||
| 28.06.2020, 17:11 | |||||||
|
сегодня используем short завтра int а переписывать все лень могу предложить union
0
|
|||||||
| 28.06.2020, 17:11 | |
|
Изменить содержимое переменной
Изменить значение переменной? Изменить значение переменной в функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|