Значит, ситуевина такая. Вот код:long long test;
test= 5368709120;При компиляции пишет:
error: integer constant is too large for "long" typeНо позвольте: тип "long long" - 64 бита(!)
При этом код:long long test;
test= 1073741824;
test*= 5;
printf("%lld\n", test);Работает (!!)
В чем прикол?
Заранее спасибо.
>Значит, ситуевина такая. Вот код:
>
>long long test;
>test= 5368709120;
>
>При компиляции пишет:
>error: integer constant is too large for "long" type
>
>Но позвольте: тип "long long" - 64 бита(!)
>При этом код:
>
>long long test;
>test= 1073741824;
>test*= 5;
>printf("%lld\n", test);
>
>Работает (!!)
>
>В чем прикол?
>Заранее спасибо.
Пиши в багфиксы
Привет,Я не большой специалист по С, но по дефолту, кажется, все переменный - signed... т.е. у вас диапазон от -2^63 до +2^63 (приблизительно :). Ваше число не выходит ли за этот предел? И если указать unsigned, не помогает?
WWell,
>>Значит, ситуевина такая. Вот код:
>>
>>long long test;
>>test= 5368709120;
>>
>>При компиляции пишет:
>>error: integer constant is too large for "long" type
>>
>>Но позвольте: тип "long long" - 64 бита(!)
>>При этом код:
>>
>>long long test;
>>test= 1073741824;
>>test*= 5;
>>printf("%lld\n", test);
>>
>>Работает (!!)
>>
>>В чем прикол?
>>Заранее спасибо.
>Пиши в багфиксыПроблема не в типе переменной test, а в типе константы.
Надо писать: test= 5368709120ull;
Спасибо, уже разобрался:long long test= 107374182400LL