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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 176, средняя оценка - 4.83
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
#1

Размер INT - C++

08.04.2010, 16:11. Просмотров 23384. Ответов 23
Метки нет (Все метки)

int a = 99999000000;
cout <<a;
Выводит 12345646 типа такова. без -!


непойму ск макс может инт держать?
sizeof(int) = 4
4 байта = 32 бита
я так понял по дефолту инт всегда unsigned да?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2010, 16:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Размер INT (C++):

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>) - C++
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

Размер int на х64 - C++
Добрый вечер, всегда помнил и читал об этом где-то: размер int равен машинному слову(совокупность регистра ОС, разрядности шины, регистра...

Размер указателя short int - C++
Доброе утро. Возник вопрос почему short int = 8 байт? Он же должен занимать 2 байта в 32-х разрядной среде. #include...

От чего зависит размер char и int - C++
Задача на С. Есть структура: struct myStruct { char a; int b; }; От чего зависит размер int и char? Вроде у int...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec - C++
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

Ошибка при сохранении больших чисел в тип int (размер встроенных типов) - C++
В двумерном целочисленном массиве (размер массива: N, M - указываются в ручную) найти указанное значение: - Количество элементов массива...

23
taras atavin
3571 / 1755 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
09.04.2010, 09:33 #16
Можно прямо указать, какой инт нужен конкретному приложению.
0
Л Антон
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 4
06.02.2013, 14:55 #17
Решил написать в этот топик раз тема про размерность переменных. (Я нуб так что ногами не бить..)
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include  <iostream>
 
using namespace std;
 
void main()
{
    int i = 17;
    int j = 29;
 
    cout << &i << endl;
    cout << &j << endl;
 
    cout << sizeof(i) << endl;
    cout << sizeof(j) << endl;
 
    cout << "end" << endl;
}
Результат:

0012FF4C
0012FF40
4
4

Вопрос, почему при размерности в 4 байта смещение адреса какое-то не внятное...
Или это я туплю, ткните носом...
Да и разве это стековое пространство, что сначала идет старшая яч. памяти и на убывание??? 0_о
0
СПП
25 / 25 / 2
Регистрация: 15.12.2012
Сообщений: 71
06.02.2013, 15:12 #18
Ещё можно такой способ использовать чтобы узнать какой предел у типов

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
 
int main(){
 
    int                          my_int;
    long int                my_long_int;
    long long int      my_long_long_int;
    unsigned int         my_usigned_int;
    
    std::cout << "INT = " << my_int
              << "\nLONG INT = " << my_long_int
              << "\nUSIGNED INT = " << my_usigned_int 
              << "\nLONG LONG INT = " << my_long_long_int << '\n';
 
system("pause");              
return 0;
}
у меня вывело
Код
INT = 4201246
LONG INT = 2293652
USIGNED INT = 4201152
LONG LONG INT = 8490430314399662078  
Для продолжения нажмите любую клавишу . . .
0
Л Антон
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 4
06.02.2013, 15:32 #19
Цитата Сообщение от СПП Посмотреть сообщение
Ещё можно такой способ использовать чтобы узнать какой предел у типов

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
 
int main(){
 
    int                          my_int;
    long int                my_long_int;
    long long int      my_long_long_int;
    unsigned int         my_usigned_int;
    
    std::cout << "INT = " << my_int
              << "\nLONG INT = " << my_long_int
              << "\nUSIGNED INT = " << my_usigned_int 
              << "\nLONG LONG INT = " << my_long_long_int << '\n';
 
system("pause");              
return 0;
}
у меня вывело
Код
INT = 4201246
LONG INT = 2293652
USIGNED INT = 4201152
LONG LONG INT = 8490430314399662078  
Для продолжения нажмите любую клавишу . . .
а ничего что они не инициализированы, да и значения у тебя какие-то странные?
без знаковое int 4 байта или 32 бита = 232-1 = 4 294 967 295

Добавлено через 7 минут
да это стек, припаял к объявлению квалификатор static увидел то что ждал -
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include  <iostream>
#include <cstdlib>
 
using namespace std;
 
void main()
{
    static int i = 17;
    static int j = 29;
 
    cout << &i << endl;
    cout << &j << endl;
 
    cout << sizeof(i) << endl;
    cout << sizeof(j) << endl;
 
    cout << "end" << endl;
}
Результат -

00419040
00419044
4
4
0
Jupiter
Каратель
Эксперт С++
6564 / 3985 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.02.2013, 15:37 #20
Цитата Сообщение от Л Антон Посмотреть сообщение
Да и разве это стековое пространство, что сначала идет старшая яч. памяти и на убывание??? 0_о
от старших адресов к младшим
1
Л Антон
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 4
06.02.2013, 16:15 #21
Цитата Сообщение от Jupiter Посмотреть сообщение
от старших адресов к младшим
Ой, да... верно.

То-есть. Если я объявляю переменную, в main() он пихает ее в стек, за исключением тех которые объявлены с квалификатором static...
Ну вроде прояснилось. Спасибо.

Добавлено через 24 минуты
Хорошо! Мозгуя выше изложенное, и ставя опыты на бедных "i" и "j" всплыл очередной вопрос.
Ну сначала код:
Кликните здесь для просмотра всего текста

C++
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
#include  <iostream>
 
using namespace std;
 
    int i;
    int j;
    
void main()
{
    i = 19;
    j = 27;
 
    cout << &i << endl;
    cout << &j << endl;
 
    cout << "\n";
 
    int k = 12;
    int v = 40;
 
    cout << &k << endl;
    cout << &v << endl;
 
    system("pause");
}

Результат компиляции и выполнения -
Кликните здесь для просмотра всего текста

00419170
0041916C

0012FF60
0012FF54

Вопрос почему в стеке, размер переменной вырастает до 12 байт. Что я не догоняю.

Я себе это так представляю, int это 4 байта, следовательно должно быть сначала адрес
[Стек]
0x0012FF60 : 0x FF FF FF FC (это то самое 12)
0x0012FF54 : 0x FF FF FF 28 (это то самое 40)
0
Jupiter
Каратель
Эксперт С++
6564 / 3985 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.02.2013, 16:20 #22
Цитата Сообщение от Л Антон Посмотреть сообщение
Вопрос почему в стеке, размер переменной вырастает до 12 байт.
в дебаге? если да, то это отладочная информация
1
Л Антон
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 4
06.02.2013, 16:43 #23
Вот я сказочный д_б точно де-баг то включен...
Спасибо... все встало на свои места...
0
Croessmah
Ушел
Эксперт CЭксперт С++
13563 / 7714 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
06.02.2013, 19:52 #24
Цитата Сообщение от Л Антон Посмотреть сообщение
Спасибо... все встало на свои места...
Подобные моменты рассматривает компилятор - что и куда засунуть.
0
06.02.2013, 19:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2013, 19:52
Привет! Вот еще темы с ответами:

Размер для данных (int, char, long, double, short, unsigned, float) - C++
Напишите программу, которая будет определять размер для данных (int, char, long, double, short, unsigned, float) и выводить информацию (о...

1.Написать программу, вычисляющую размер памяти, отводимой компилятором под тип int - C++
#include &quot;iostream.h&quot; int main() { int x; cin&gt;&gt;x; cout&lt;&lt;&quot;razmer tipa int&quot;&lt;&lt;sizeof(int)&lt;&lt;sizeof(x)&lt;&lt;&quot;\n&quot;; return 0; } ...

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.? - C++
Не понимаю, с чего начинать. Заранее спс.


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Опции темы

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