Стажер, который работает со мной, показал мне экзамен, который он изучил в области информатики о проблемах, связанных с контентом. Возник вопрос, который показал строку ASCII "My-Pizza", и студент должен был показать, как эта строка будет представлена в памяти на маленьком компьютерном компьютере. Конечно, это звучит как вопрос об уловке, потому что строки ASCII не затрагиваются проблемами с endian.
Но, к сожалению, стажер утверждает, что его профессор настаивает на том, что строка будет представлена как:
P-yM azzi
Я знаю, что это неправильно. Нет никакой возможности, чтобы строка ASCII представлялась такой же на любой машине. Но, по-видимому, профессор настаивает на этом. Итак, я написал небольшую программу на C и сказал стажеру передать его своему профессору.
#include <string.h>
#include <stdio.h>
int main()
{
const char* s = "My-Pizza";
size_t length = strlen(s);
for (const char* it = s; it < s + length; ++it) {
printf("%p : %c\n", it, *it);
}
}
Это наглядно демонстрирует, что строка хранится в памяти как "My-Pizza". Через день стажер возвращается ко мне и говорит, что профессор теперь утверждает, что C автоматически преобразует адреса для отображения строки в правильном порядке.
Я сказал ему, что его профессор безумный, и это явно неправильно. Но чтобы проверить мое собственное здравомыслие здесь, я решил опубликовать это в stackoverflow, чтобы я мог заставить других подтвердить, что я говорю.
Итак, я спрашиваю: кто здесь?