2015-12-26 3 views
-6

Что будет выводиться, если вы скомпилируете и выполните следующий c-код?Компиляция в C

void main(){ 
    int huge*p=(int huge*)0XC0563331; 
    int huge*q=(int huge*)0xC2551341; 
    *p=200; 
    printf("%d",*q); 
} 
+2

Почему вы не проверяете? –

+1

Возможно неопределенное поведение. – MikeCAT

+0

Затем опубликуйте сообщение об ошибке и разрешите проблему, вместо того чтобы задать такой вопрос ... да, честно говоря, дерьмо. «Приятель». Как программа, которая не компилируется, имеет выход !? И его неопределенное поведение в любом случае. – Downvoter

ответ

1

Предполагая, что вы имели в виду, чтобы написать следующее:

#include <stdio.h> 

int main(void){ 
    int *p=(int *)0XC0563331; 
    int *q=(int *)0xC2551341; 
    *p=200; 
    printf("%d",*q); 
    return 0; 
} 

, то выход должен быть любым целым значением сохраняется, начиная с адреса 0xC2551341.

Я не уверен, что должно представлять int huge; более широкие целые типы: long int и long long int (или только long и long long). Обратите внимание, что эти более широкие типы используют спецификаторы преобразования %ld и %lld соответственно.

+1

'огромный' относится к 16-разрядному доступу к памяти x86 для доступа к адресам за пределами текущего сегмента 64 Кбит .. Он выглядит как код из какого-то античного компилятора , и будет почти наверняка seg-fault на современном компиляторе и ОС. – Clifford

Смежные вопросы