[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: GCC генерирует неправильный код?



On 2010.03.14 at 15:20:35 +0200, Hleb Valoshka wrote:

> On 3/14/10, Ekimov Alexandr <toekimov@gmail.com> wrote:
> >> 	fscanf(f, "%u", &n);
> > Я с С не знаю, но знаком чуток с С++. Скорее всего ошибка в вашем коде, gcc
> > лажает редко. вы объявляете переменную типа  size_t, а потом fscanf
> > говорите,
> > что она unsigned int. Для AMD64 size_t будет иметь размер 64 бита(как и
> > указатели) ,а unsigned int 32 бита.  Проверьте это.
> 
> Мне почему-то всегда казалось, что size_t  -- это unsigned int. Надо
> найти ту книгу Шилда, по которой я учил Си, тогда не было ни Си99, ни
> АМД 64 бит.

И выкинуть ее в помойку. А лучше сжечь, чтобы бомжи в помойке не нашли и
не нахватались таких глупостей. 

В языке C никто никому ничего не обещал про размеры разных целых типов,
кроме того что sizeof(char) <= sizeof(short) <= sizeof(int) <=
sizeof(long). 

Архитектуры, на которых sizeof(char) == sizeof(short) == sizeof(long),
насколько я помню, существовали задолго до того, как авторы подобных
книг, считающие что "процессор может быть любым, если он совместим с
i386", впервые в жизни увидели компьютер.




Reply to: