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

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

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

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

26.02.2012, 12:17. Просмотров 2501. Ответов 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 дк вообще не получилось вывести число
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 12:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как поместить число 4294967296 в переменную? (C++):

Как поместить в шаблон статическую переменную? - C++
мучаюсь вторые стуки, не где не могу найти решения проблемы, смысл в следующим, сделал каласс образно говоря контейнер, в нем прописал...

Как поместить в объявленную память переменную класса? - C++
Вот, например, создал я массив class_name *array = new class_name ; Как я могу теперь засунуть в массив какие-нибудь переменные класса,...

Поместить код символа в переменную. Sprintf - C++
char a; int i=1; char b; sprintf(b,&quot;%d&quot;,i); a=b; Собсно,ведь код сводится к тому,чтобы записать int i в char a.Но...

Ping...неудается с функцию system поместить переменную - C++
неудается с функцию system поместить переменную...при запуске выводит что неудалось найти узел string...как запихать переменные в system? ...

Как в C++ записать в переменную дробное число? - C++
Здравствуйте форумчане. Только начал осваивать азы программирования с++ и собсна вопрос появился: что нужно вписать в код, чтобы можно было...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dimcoder
Полярный
462 / 434 / 68
Регистрация: 11.09.2011
Сообщений: 1,133
26.02.2012, 12:22 #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
1
9-loh
2 / 2 / 0
Регистрация: 18.12.2010
Сообщений: 31
26.02.2012, 12:23 #3
long long
0
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
26.02.2012, 12:51 #4
Тут достаточно 32-битного беззнакового типа. Главное - к константе прилепить правильный суффикс, потому как константы по дефолту трактуются как типа int, а в int данная константа не влезает

C
1
unsigned u = 4294967296u;
1
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
26.02.2012, 13:19 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Evg, UINT_MAX на единицу меньше, обнулится оно при таком подходе...
http://liveworkspace.org/code/c803e1...2402a67cdd6e70
3
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
26.02.2012, 13:33 #6
От чёрт... не заметил. Тогда надо использовать 64-битный целочисленный тип long long или unsigned long long, понимая при этом, что старые компиляторы его не поддерживают. Но суффикс для константы всё равно придётся писать, потому как без суффикса константа будет трактоваться как int'овая, а потому компилятор может обрезать её значение

C
1
2
long long a = 4294967296LL;
unsigned long long b = 4294967296ULL;
Коды из поста #2, запущенные на codepad.org скорее всего не скомпилируются, т.к. компилятор выдаст предупреждение (а на том ресурсе компилятор настраивается на кучу предупреждений, а так же на то, чтобы предупреждения трактовать как ошибки). Просто сайт сейчас что-то не работает и проверить не могу. Т.е. такое написание кода с точки зрения стандарта является НЕкорректным, хотя современные компиляторы в таких случаях строят "правильный" код. Но не факт, что все компиляторы поступят именно так
0
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
26.02.2012, 14:31 #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;
 
}
0
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
26.02.2012, 14:33 #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;
 
}
0
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
26.02.2012, 14:38 #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;
 
}
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 14:52 #10
Цитата Сообщение от odip Посмотреть сообщение
Впрочем gcc работает и вот так
К сожалению, не работает http://liveworkspace.org/code/33cfca...4ca9b225f4f93d
0
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
26.02.2012, 14:56 #11
Цитата Сообщение от odip Посмотреть сообщение
Совсем правильная печать 64-битных чисел
"Совсем правильная" с точки зрения чего? Может это уже Си99?
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
26.02.2012, 17:17 #12
unsigned long long - целый тип(может содержать до 20 знаков)
0
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
26.02.2012, 17:55 #13
Цитата Сообщение от sovaz1997 Посмотреть сообщение
unsigned long long - целый тип(может содержать до 20 знаков)
Не "до 20 знаков", а "от 0 до 18.446.744.073.709.551.615"
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 18:12 #14
Цитата Сообщение от Evg Посмотреть сообщение
"от 0 до
Громко сказано. Гарантировано не менее, но может быть и другое значение.
0
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
26.02.2012, 20:00 #15
Да в gcc что только не работает
C
1
printf("%lli\n", 4294967296LL);
Добавлено через 2 минуты
Цитата Сообщение от go Посмотреть сообщение
Громко сказано.
Правильно сказано. ...Может принимать значения от 0 до 18.446.744.073.709.551.615 включительно, если так понятнее...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2012, 20:00
Привет! Вот еще темы с ответами:

Как записать шестнадцатеричное число в переменную типа string? - C++
Есть ф-ция, которая переводит целочисленный переменные или просто цифры в шестнадцатеричный вид. Например этот кусок кода выведет в консоль...

При вводе в переменную через scanf число 0.5 записывается как 0 - C++
Всем привет, столкнулся с такой проблемой: В универе надо простенькую задачку написать на С... Ввожу в х число 0.5, а в х в итоге лежит...

Как проверить, что пользователь ввел число в переменную string? - C++
Скажите пожалуйста как проверить что пользователь ввел число в переменную string? И как его потом конвертировать в int ?

Поместить двоичный код, в веденной строке, в переменную типа int и unsigned int. - C++
Пользователь вводит двоичную строку (32 символа). Поместить двоичный код, в веденной строке, в переменную типа int и unsigned int.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.02.2012, 20:00
Ответ Создать тему
Опции темы

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