Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Компилятор тупит. / 7 сообщений из 7, страница 1 из 1
07.03.2007, 12:01
    #34376986
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компилятор тупит.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
unsigned long long l;
//unsigned long long l=0x100000000;

int main() {

    printf("%d\n", sizeof(l));

    l= 1 ;
    printf("%lld\n", l);

    l<<= 16 ;
    printf("%lld\n", l);

    l<<= 16 ;
    printf("%lld\n", l);

    l<<= 16 ;
    printf("%lld\n", l);

//    l=0x100000000;
    l=0xffffffff;
    printf("%lld\n", l);

    return  0 ;
};


Если раскоментарить компилятор выдет:
автор
c.cpp:44: error: integer constant is too large for "long" type


Причем, long long имеет 8 байт и все в него нормально вмещается:

автор
8
1
65536
4294967296
281474976710656
4294967295


Собственно вопрос: Как научить компилятор вносить в long long большие значения напрямую. Иначе приходится извращаться со сдвигами.
...
Рейтинг: 0 / 0
07.03.2007, 12:19
    #34377041
roman10
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компилятор тупит.
Какой компилятор вы используете?
...
Рейтинг: 0 / 0
07.03.2007, 12:28
    #34377076
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компилятор тупит.
для VC работает:

Код: plaintext
1.
2.
3.
4.
	__int64 ull;
	ull = 0xABCDEF0123456789;

	fprintf(stderr,  "%x%x\n", ( (unsigned long*)&ull )[ 1 ] , ( (unsigned long*)&ull )[ 0 ] );

для gcc придеться использовать long long скорее, хотя не уверен.

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
07.03.2007, 12:38
    #34377117
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компилятор тупит.
roman10Какой компилятор вы используете?

gcc 3.3.3
...
Рейтинг: 0 / 0
07.03.2007, 12:39
    #34377121
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компилятор тупит.
Aklinдля VC работает:

Код: plaintext
1.
2.
3.
4.
	__int64 ull;
	ull = 0xABCDEF0123456789;

	fprintf(stderr,  "%x%x\n", ( (unsigned long*)&ull )[ 1 ] , ( (unsigned long*)&ull )[ 0 ] );

для gcc придеться использовать long long скорее, хотя не уверен.

аффтопитезь: объект либо именован, либо не существует

Так я его и использую, как и написал выше.
...
Рейтинг: 0 / 0
07.03.2007, 12:43
    #34377131
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компилятор тупит.
Для long long используй (gcc)

Код: plaintext
1.
    l=0x100000000LL;

LL

---------------------------------------------------

...
Рейтинг: 0 / 0
07.03.2007, 12:47
    #34377155
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компилятор тупит.
cap83Для long long используй (gcc)

Код: plaintext
1.
    l=0x100000000LL;

LL


О! Пасиб.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Компилятор тупит. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]