Поведение reinterpret_cast в этом случае зависит от платформы. Начиная с С++11 поведение такого преобразования определяется как
int* p = static_cast<int *>(static_cast<void *>(c));
и результат будет зависеть от поведения внешнего static_cast. Поведение static_cast из void * в объектный указательный тип является неспецифицированным, если исходный void * адрес не удовлетворяет требованиям выравнивания целевого типа.
На одной платформе приведение типа от указателя с более расслабленными требованиями выравнивания к указателю с более строгими требованиями выравнивания может привести к потере оригинального адресного значения, т.е. компилятор и/или аппаратура насильно выравняют указатель.
На другой платформе адресное значение указателя сохранится, но при попытке доступа через невыровненный указатель программа будет аварийно остановлена.
На третьей платформе адресное значение указателя сохранится, но при доступе через невыровненный указатель такой доступ будет производиться успешно, но менее эффективно.
На четвертой платформе не будет вообще никаких негативных последствий.
Предупреждение о выравнивании данных может либо говорить том, что подобные проблемы могут иметь место на вашей платформе, либо просто являться педантичным "предупреждением портабельности", т.е. говорить том, ваш код может вести себя по-другому на других платформах.
int- это signed.char- это unsigned. И.е.intможет иметь отрицательную знаковую часть. Это предупреждение, чтобы программист помнил это. – Mister_Jesus Jul 14 '18 at 16:02p(впрочем, зависит от архитектуры). Вообще это означает, что данные к которым вы обращаетесь могут находится по адресу не кратном размеру адресуемого элемента данных – avp Jul 14 '18 at 16:03increases required alignment of target typeв тексте вопроса вы видели? – avp Jul 14 '18 at 16:14char- это unsigned". Почему вы решили, что это именно так? – AnT stands with Russia Jul 14 '18 at 16:30Какими последствиями чревато подобное применение reinterpret_cast для типов с разными требованиями по выравниванию?. Если говорить о конкретном коде в тексте вопроса, то независимо от предупреждения ничего плохого ни в ARM, ни на X86 не произойдет, поскольку обращения к памяти по указателям в нем нет – avp Jul 14 '18 at 16:32charсталunsigned? – NewView Jul 14 '18 at 17:01