MPI-1 не позволяет изменение типа для знаковых и беззнаковых char. Так как это ограничение (формально) мешает программисту Си производить изменение таких типов (что может быть полезно, например, в обработке изображений, где пикселы часто представляются в виде ``unsigned char''), мы подскажем способ сделать это.
MPI-1.2 уже имеет типы данных Си MPI_CHAR и MPI_UNSIGNED_CHAR. Тем не менее, есть проблема - MPI_CHAR должен представлять символ, а не маленькое целое, и поэтому будет преобразован между машинами с разным представлением символов.
Чтобы преодолеть это, в MPI-2 добавлен новый стандартный тип данных MPI, MPI_SIGNED_CHAR, соответствующий ANSI Си и типу данных ANSI С++ signed char.
Совет пользователям: Типы MPI_CHAR и MPI_CHARACTER созданы для символов, и поэтому они будут преобразованы для сохранения печатаемого представления в случае пересылки между машинами с разными кодами символов. Если же требуется сохранить целое значение, следует использовать MPI_SIGNED_CHAR и MPI_UNSIGNED_CHAR.
Типы MPI_SIGNED_CHAR и MPI_UNSIGNED_CHAR могут быть использованы в операциях преобразования. MPI_CHAR (представляющая печатаемы символы) - нет. Это расширение MPI-1.2, так как MPI-1.2 не разрешает использование MPI_UNSIGNED_CHAR в операциях преобразования (и не имеет типа MPI_SIGNED_CHAR).
В гетерогенных средах, MPI_CHAR и MPI_WCHAR будут преобразованы для сохранения печатаемых символов, когда MPI_SIGNED_CHAR и MPI_UNSIGNED_CHAR будут преобразованы для сохранения целых значений.