чем разница между «\ х» в начале полукокса к 0x в начала полукокса
Разница заключается в том, что 0x12 используется для указания числа в шестнадцатеричном , а «\ x» используется для строковых литералов. Пример:
#include <stdio.h>
int main(){
int ten = 0xA;
char* tenString = "1\x30";
printf("ten as integer: %d\n", ten);
printf("ten as string: %s\n", tenString);
return 0;
}
Отпечатки должны выводиться как «10» (попробуйте понять, почему).
при выдаче символов (без знака), а не (неподписанный знак) - что это значит? why (unsigned) '\ xFF'! = 0xFF?
"unsigned" - это просто аббревиатура от "unsigned int". Итак, вы бросаете из char в int. Это даст вам числовое представление символа в наборе символов, используемом вашей платформой. Обратите внимание, что значение, которое вы получаете для символа, зависит от платформы (обычно в зависимости от кодировки по умолчанию). Для символов ASCII вы, как правило, получаете код ASCII, но все, что за ним будет зависеть, зависит от конфигурации платформы и времени выполнения.
Понимание того, что делает бросок от одного типа к другому, очень сложно (и часто, хотя и не всегда, зависит от платформы), поэтому избегайте его, если можете. Иногда это необходимо. См. need-some-clarification-regarding-casting-in-c
Внедрение 'char' в' int' является наиболее определенно * не * неопределенным поведением - оно полностью определено. Результат такого выражения имеет то же значение, что и 'char', и тип' int'. – caf
@caf: Спасибо за разъяснение. Отредактировал мой ответ. – sleske