Страница 1 из 1

7FFFFFFF

Добавлено: 2009-01-13 13:02:50
kmb
Бить надо разработчиков линуксов,
ибо 2147483647=7FFFFFFF,
в числах со знаком это самое большое.
видимо функция atoi не понимает в юниксах если писать как безнаковое.
короче ладно заменю все на scanf("%u") так в любой ОС должно быть понятно. (с)

Вот такое вот замечание получил %)

Re: 7FFFFFFF

Добавлено: 2009-01-13 13:32:54
zg
а в чём трабла то?

Re: 7FFFFFFF

Добавлено: 2009-01-13 13:36:04
hizel
бред какой-то
и причём здесь линупс-девелоперы!? :no:

Re: 7FFFFFFF

Добавлено: 2009-01-13 13:46:19
zg
hizel писал(а):и причём здесь линупс-девелоперы!? :no:
кто-то же должен быть виноват -)))

Re: 7FFFFFFF

Добавлено: 2009-01-13 13:57:19
kmb
Я суть проблемы выложил возникающей на фре, при работе с одним приложением, писал его не я, просто программист так обосновал ошибку) Подумал может кому интересно будет...
Если я правильно понимаю:

Код: Выделить всё

видимо функция atoi не понимает в юниксах если писать как безнаковое.
то вот корень проблемы)

Re: 7FFFFFFF

Добавлено: 2009-01-13 14:11:36
hizel
видимо, невидимо, работа atoi определяется стандартом ;)
где кусок кода !?

Re: 7FFFFFFF

Добавлено: 2009-01-13 14:52:36
zg

Код: Выделить всё

zg# cat 1.c
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
  char * sInt="2147483650";

  printf("Is a string %s equal integer a %i?\n", sInt, atoi(sInt));
}
zg# cc 1.c -o 1.bin && ./1.bin
Is a string 2147483650 equal a integer 2147483647?
zg#
только причём тут беззнаковое? здесь имеет место быть

Код: Выделить всё

zg# getconf LONG_MAX
2147483647
zg#
при чём тут знаки... :???:
kmb писал(а):видимо функция atoi не понимает в юниксах если писать как безнаковое.
автор видимо не понимает как С устроено.