Форум программистов, компьютерный форум CyberForum.ru

Как поместить число 4294967296 в переменную? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.65
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
26.02.2012, 12:17     Как поместить число 4294967296 в переменную? #1
делаю ip калькулятор,
если используется маска 0.0.0.0 то кол-во хостов в сети = 4294967296

вот не знаю какой тип переменной использовать чтобы поместилось такое число.
вроде float нормально должен помещать. но что-то тут не так..

+ еще это число нужно вывести на экран через printf

к примеру:
C++
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
void main ()
{
    float a=4294967296;
 
    printf("%lf",a);
 
}
на выходе 4294967296.00000
а мне нужно без запятой, только целую часть.

пробовал переделать на double дк вообще не получилось вывести число
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 12:17     Как поместить число 4294967296 в переменную?
Посмотрите здесь:

C++ Как поместить в шаблон статическую переменную?
Ping...неудается с функцию system поместить переменную C++
Как записать в переменную int** x число? C++
C++ Поместить задаваемое вводом с клавиатуры целое число в начало файла
Влезет ли число в переменную? C++
При вводе в переменную через scanf число 0.5 записывается как 0 C++
Поместить код символа в переменную. Sprintf C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,110
26.02.2012, 12:22     Как поместить число 4294967296 в переменную? #2
Ну допустим:

C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main ()
{
        long long int a = 4294967296;
 
        printf("%lli",a);
        
        return 0;
}
http://liveworkspace.org/code/71d1f1...1f19d4ee474a44

Или еще больше:

C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main ()
{
        unsigned long long int a = 4294967296;
 
        printf("%lli",a);
        
        return 0;
}
http://liveworkspace.org/code/d87022...a5c7f56f2d89c2
9-loh
2 / 2 / 0
Регистрация: 18.12.2010
Сообщений: 31
26.02.2012, 12:23     Как поместить число 4294967296 в переменную? #3
long long
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16935 / 5340 / 328
Регистрация: 30.03.2009
Сообщений: 14,353
Записей в блоге: 26
26.02.2012, 12:51     Как поместить число 4294967296 в переменную? #4
Тут достаточно 32-битного беззнакового типа. Главное - к константе прилепить правильный суффикс, потому как константы по дефолту трактуются как типа int, а в int данная константа не влезает

C
1
unsigned u = 4294967296u;
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9383 / 5433 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
26.02.2012, 13:19     Как поместить число 4294967296 в переменную? #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Evg, UINT_MAX на единицу меньше, обнулится оно при таком подходе...
http://liveworkspace.org/code/c803e1...2402a67cdd6e70
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16935 / 5340 / 328
Регистрация: 30.03.2009
Сообщений: 14,353
Записей в блоге: 26
26.02.2012, 13:33     Как поместить число 4294967296 в переменную? #6
От чёрт... не заметил. Тогда надо использовать 64-битный целочисленный тип long long или unsigned long long, понимая при этом, что старые компиляторы его не поддерживают. Но суффикс для константы всё равно придётся писать, потому как без суффикса константа будет трактоваться как int'овая, а потому компилятор может обрезать её значение

C
1
2
long long a = 4294967296LL;
unsigned long long b = 4294967296ULL;
Коды из поста #2, запущенные на codepad.org скорее всего не скомпилируются, т.к. компилятор выдаст предупреждение (а на том ресурсе компилятор настраивается на кучу предупреждений, а так же на то, чтобы предупреждения трактовать как ошибки). Просто сайт сейчас что-то не работает и проверить не могу. Т.е. такое написание кода с точки зрения стандарта является НЕкорректным, хотя современные компиляторы в таких случаях строят "правильный" код. Но не факт, что все компиляторы поступят именно так
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
26.02.2012, 14:31     Как поместить число 4294967296 в переменную? #7
gcc работает
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
 
int main( void ) {
 
long long a= 4294967296LL;
 
printf( "%I64d\n", a );
return 0;
 
}
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
26.02.2012, 14:33     Как поместить число 4294967296 в переменную? #8
Впрочем gcc работает и вот так
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
 
int main( void ) {
 
int64_t a= 4294967296LL;
 
printf( "%I64d\n", a );
return 0;
 
}
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
26.02.2012, 14:38     Как поместить число 4294967296 в переменную? #9
Совсем правильная печать 64-битных чисел
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define __STDC_FORMAT_MACROS 1
 
#include <stdio.h>
#include <inttypes.h>
 
int main( void ) {
 
int64_t a = 4294967296LL;
 
printf( "%" PRId64 "\n", a );
 
return 0;
 
}
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 14:52     Как поместить число 4294967296 в переменную? #10
Цитата Сообщение от odip Посмотреть сообщение
Впрочем gcc работает и вот так
К сожалению, не работает http://liveworkspace.org/code/33cfca...4ca9b225f4f93d
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16935 / 5340 / 328
Регистрация: 30.03.2009
Сообщений: 14,353
Записей в блоге: 26
26.02.2012, 14:56     Как поместить число 4294967296 в переменную? #11
Цитата Сообщение от odip Посмотреть сообщение
Совсем правильная печать 64-битных чисел
"Совсем правильная" с точки зрения чего? Может это уже Си99?
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
26.02.2012, 17:17     Как поместить число 4294967296 в переменную? #12
unsigned long long - целый тип(может содержать до 20 знаков)
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16935 / 5340 / 328
Регистрация: 30.03.2009
Сообщений: 14,353
Записей в блоге: 26
26.02.2012, 17:55     Как поместить число 4294967296 в переменную? #13
Цитата Сообщение от sovaz1997 Посмотреть сообщение
unsigned long long - целый тип(может содержать до 20 знаков)
Не "до 20 знаков", а "от 0 до 18.446.744.073.709.551.615"
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 18:12     Как поместить число 4294967296 в переменную? #14
Цитата Сообщение от Evg Посмотреть сообщение
"от 0 до
Громко сказано. Гарантировано не менее, но может быть и другое значение.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9383 / 5433 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
26.02.2012, 20:00     Как поместить число 4294967296 в переменную? #15
Да в gcc что только не работает
C
1
printf("%lli\n", 4294967296LL);
Добавлено через 2 минуты
Цитата Сообщение от go Посмотреть сообщение
Громко сказано.
Правильно сказано. ...Может принимать значения от 0 до 18.446.744.073.709.551.615 включительно, если так понятнее...
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 20:03     Как поместить число 4294967296 в переменную? #16
Цитата Сообщение от easybudda Посмотреть сообщение
Правильно сказано.
Доказательство то где? http://ru.wikipedia.org/wiki/Limits.h
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
26.02.2012, 20:17     Как поместить число 4294967296 в переменную? #17
чего вы паритесь воспользуйтесь длинной арифметикой и засуньте это число в массив по 4 элемента
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16935 / 5340 / 328
Регистрация: 30.03.2009
Сообщений: 14,353
Записей в блоге: 26
26.02.2012, 23:16     Как поместить число 4294967296 в переменную? #18
Цитата Сообщение от go Посмотреть сообщение
Доказательство то где?
Доказательство чего?
NoMasters
Псевдослучайный
1740 / 1083 / 70
Регистрация: 13.09.2011
Сообщений: 3,102
26.02.2012, 23:40     Как поместить число 4294967296 в переменную? #19
Зато с %lld работает

Не по теме:

i'm slowpoke

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2012, 23:51     Как поместить число 4294967296 в переменную?
Еще ссылки по теме:

Как проверить, что пользователь ввел число в переменную string? C++
C++ Как записать шестнадцатеричное число в переменную типа string?
C++ Как в C++ записать в переменную дробное число?
C++ Поместить число большого диапазона в меньший диапазон
Разделить целое число на цифры и поместить в массив C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
26.02.2012, 23:51     Как поместить число 4294967296 в переменную? #20
если используется маска 0.0.0.0 то кол-во хостов в сети = 4294967296
Минус 0.0.0.0
Минус 255.255.255.255
Итого количественно 4294967294
Хватит обычного беззнакового инта.
Yandex
Объявления
26.02.2012, 23:51     Как поместить число 4294967296 в переменную?
Ответ Создать тему
Опции темы

Текущее время: 03:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru