IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> C, GCC, Применение 64 бит переменных
SKVOZNJAK
сообщение 23.10.2009 3:57
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Как использовать 64 битные целочисленные переменные с диапазонами
от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 и
от 0 до 18,446,744,073,709,551,615
Не получается накормить компилятор соответствующими типами переменных.
Код

#include <stdio.h>
#include <limits.h>

unsigned long long w2;
signed long long q2;


int main ()
{
q2=9223372036854775807;
w2=18446744073709551615;
printf ("%d\n", q2);
printf ("%d\n", w2);
return 0;
}

Компиляция выдаёт ошибку:
z4.c: В функции ‘main’:
z4.c:11: предупреждение: целая константа слишком велика для типа ‘long’
z4.c:12:4: warning: integer constant is so large that it is unsigned
z4.c:12: предупреждение: эта десятичная константа является беззнаковой только в ISO C90
z4.c:12: предупреждение: целая константа слишком велика для типа ‘long’

Сообщение отредактировано: SKVOZNJAK - 23.10.2009 4:44
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
Lapp
сообщение 23.10.2009 4:46
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Сделай так:
w2=18446744073709551615UL;


и ставь, плз, правильные тэги..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 23.10.2009 12:01
Сообщение #3


Гость






Цитата
Сделай так:
Это проблемы не решает. Вот правильный код:
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>

uint64_t w2;
int64_t q2;


int main ()
{
q2=9223372036854775807LL;
w2=18446744073709551615ULL;

printf ("%10"PRId64"\n", q2);
printf ("%10"PRIu64"\n", w2);
return 0;
}
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 23.07.2025 22:08
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"