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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.65
GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
#1

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

26.02.2012, 12:17. Просмотров 2434. Ответов 25
Метки нет (Все метки)

делаю 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
Полярный
451 / 424 / 66
Регистрация: 11.09.2011
Сообщений: 1,124
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
Эксперт CАвтор FAQ
17378 / 5616 / 350
Регистрация: 30.03.2009
Сообщений: 15,382
Записей в блоге: 26
26.02.2012, 12:51     Как поместить число 4294967296 в переменную? #4
Тут достаточно 32-битного беззнакового типа. Главное - к константе прилепить правильный суффикс, потому как константы по дефолту трактуются как типа int, а в int данная константа не влезает

C
1
unsigned u = 4294967296u;
easybudda
Эксперт С++
9438 / 5461 / 925
Регистрация: 25.07.2009
Сообщений: 10,481
26.02.2012, 13:19     Как поместить число 4294967296 в переменную? #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Evg, UINT_MAX на единицу меньше, обнулится оно при таком подходе...
http://liveworkspace.org/code/c803e1...2402a67cdd6e70
Evg
Эксперт CАвтор FAQ
17378 / 5616 / 350
Регистрация: 30.03.2009
Сообщений: 15,382
Записей в блоге: 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
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
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
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
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
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
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++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 14:52     Как поместить число 4294967296 в переменную? #10
Цитата Сообщение от odip Посмотреть сообщение
Впрочем gcc работает и вот так
К сожалению, не работает http://liveworkspace.org/code/33cfca...4ca9b225f4f93d
Evg
Эксперт CАвтор FAQ
17378 / 5616 / 350
Регистрация: 30.03.2009
Сообщений: 15,382
Записей в блоге: 26
26.02.2012, 14:56     Как поместить число 4294967296 в переменную? #11
Цитата Сообщение от odip Посмотреть сообщение
Совсем правильная печать 64-битных чисел
"Совсем правильная" с точки зрения чего? Может это уже Си99?
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
26.02.2012, 17:17     Как поместить число 4294967296 в переменную? #12
unsigned long long - целый тип(может содержать до 20 знаков)
Evg
Эксперт CАвтор FAQ
17378 / 5616 / 350
Регистрация: 30.03.2009
Сообщений: 15,382
Записей в блоге: 26
26.02.2012, 17:55     Как поместить число 4294967296 в переменную? #13
Цитата Сообщение от sovaz1997 Посмотреть сообщение
unsigned long long - целый тип(может содержать до 20 знаков)
Не "до 20 знаков", а "от 0 до 18.446.744.073.709.551.615"
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 18:12     Как поместить число 4294967296 в переменную? #14
Цитата Сообщение от Evg Посмотреть сообщение
"от 0 до
Громко сказано. Гарантировано не менее, но может быть и другое значение.
easybudda
Эксперт С++
9438 / 5461 / 925
Регистрация: 25.07.2009
Сообщений: 10,481
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++
3586 / 1366 / 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
Эксперт CАвтор FAQ
17378 / 5616 / 350
Регистрация: 30.03.2009
Сообщений: 15,382
Записей в блоге: 26
26.02.2012, 23:16     Как поместить число 4294967296 в переменную? #18
Цитата Сообщение от go Посмотреть сообщение
Доказательство то где?
Доказательство чего?
NoMasters
Псевдослучайный
1744 / 1087 / 71
Регистрация: 13.09.2011
Сообщений: 3,111
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 в переменную?
Ответ Создать тему
Опции темы

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