next up previous contents
Next: Тип unsigned long long Up: Новые стандартные типы Previous: ``Широкие'' символы   Contents

Знаковые (signed) символы и изменение типа

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 будут преобразованы для сохранения целых значений.



Alex Otwagin 2002-12-10