Char подписан или без знака по умолчанию в iOS?

Является ли char подписанным или неподписанным по умолчанию на iOS?

(Я думал, что это был бы хорошо ответивший вопрос, но странно, что google совсем ничего не полезен!)

Ответы

Ответ 1

В большинстве случаев char не имеет знака в ARM (для причин производительности) и подписан на других платформах.

iOS отличается от обычного соглашения для ARM, а char подписывается по умолчанию. (В частности, это отличается от Android, где код, скомпилированный в стандартах ndk по умолчанию, равен unsigned char.)

Это можно изменить в xcode, есть опция 'char' Type is unsigned (по умолчанию она отключена). Если это будет изменено на "да", xcode пройдет -funsigned-char до llvm. (Проверено на xcode 5.0.2)

Причина, по которой iOS отличается, упоминается в iOS ABI Function Call Guide: ARM64 Function Calling Conventions, в котором говорится просто:

В iOS, как и в других платформах Darwin, оба char и wchar_t подписанных типов.

Ответ 2

почему ты просто не попробовал?

char x,y;

x=y=0x7F;
x++;
if(x>y) unsigned else signed...