Если я запускаю следующие программы на двух одинаковых 64-битных машинах отдельно, а затем сравниваю их весь байт по байтам, какую разницу я увижу?В чем разница между двумя разными типами с одинаковым размером в C?
int main(int argc, char *argv[])
{
unsigned int x=1;
getc(stdin);
return 0;
}
int main(int argc, char *argv[])
{
unsigned long x=1;
getc(stdin);
return 0;
}
если два х не просто тип, если они две разные имена структура с такой же структурой, одинаковым содержимым и того же размера, какая разница я буду видеть?
Хорошо, позвольте мне прояснить этот вопрос, теперь программа меняется на этот
unsigned int x=1;
printf("%d",sizeof x);
return 0;
unsigned long x=1;
printf("%d",sizeof x);
return 0;
и два выхода 4 для моего компилятора, и теперь используется х, поэтому нет оптимизированного
Теперь мой вопрос: если вы скажете мне, что есть какая-то разница, где разница в памяти? Они должны отличаться в памяти, потому что типы различны. Но где? Я не мог этого найти.
Если вы скажете мне, что в памяти нет разницы. Почему нет разницы. Что-то должно храниться где-то в памяти. В противном случае, я думаю, что компьютер не знает, что адрес является переменной и какой переменной.
Обратите внимание, что для компилятора на 64-разрядной машине обычно используется 32-битный int. Но если они действительно одинакового размера, я сомневаюсь, что вы увидите разницу. –
Обратите внимание, что msvc также имеет длину 32 бит для x64. – Bathsheba
Обратите внимание, что поскольку 'x' не используется, эта строка, вероятно, будет оптимизирована, поэтому не будет никакой разницы, независимо от размера. – interjay