Цитата
А указателю ты =1 не присвоишь?
Именно 1? Присвою ,конечно, только он все равно не валидный. Вообще история с signed/unsigned для того, чтобы благополучно получить эксепшн(ошибку компиляции) в ходе арифметики с указателями, а не лезть сразу по отрицательному.
Цитата
если ты лезешь писать на Си, то ты должен понимать, что делаешь и как ты вообще допустил туда -1
А вот и нет. Сама система типов не даст без явных кастов пропихнуть -1 как адрес. Получишь минимум ворнинг. А вот в int, который уже в моей длл будет выглядеть как поинтер - пожалуйста.
Т.е. в идеале в скрипте нельзя указателю присвоить -1 и в длл тоже нельзя. Получим то что хотели, а щас я могу лишь надеться(написать обертку) что данные валидные.
Цитата
Если значение в памяти занимает одинаковое количество байт и способ записи не меняется а названий (способов объявления) много, то для меня это становится некоторым сомнительным решенем, особенно когда вызывает конфликты кастов при том, что в памяти эти "разные" типы выглядят идентично
Как int32 может быть равен uint32 ? И там и там 4 байта, диапазоны разные, а уж инструкции для работы с ними тем более. Так например, побитовый сдвиг для signed сохраняет знаковый бит, а для unsignned - нет. Тоже сложение, для одного результатом может стать переполнение, для другого просто неверный результат. Таких отличий - море. Другой вопрос, когда появляются аллиасы UINT, UINT32, DWORD, QWORD и так далее, вот тут уже перебор.
К слову, для ясности, int, unsigned int - фундаментальные типы, т.е. априори они не одно и тоже. int32_t и uint32_t лишь удобные аллиасы для них. а вот DWORD(uint32) уже аллиас, который не нужен.