powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему так?
25 сообщений из 79, страница 1 из 4
почему так?
    #40080379
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct S {
    int a,b,c;
};

int main(int argc, char *argv[])
{
    S s;
    cout << s.a << endl // 32767
         << s.b << endl // 0
         << s.c << endl // 0
    ;
}


int и uint выдают:
32764-7 (4 варианта)
0
0

но если заменить на short/ushort, то 3 ноля...
шо за?
во1, почему не всегда 3 ноля?
а во2, почему 4-7 ?
...
Рейтинг: 0 / 0
почему так?
    #40080380
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бабушкин зайчик,

какая разница, что лежит в неинициализированных переменных?
...
Рейтинг: 0 / 0
почему так?
    #40080381
обычно там лежит рандомная цифра, в т.ч. отрицательная
а тут нули
...
Рейтинг: 0 / 0
почему так?
    #40080382
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

Просто другой размер переменных и они размещаются в другом месте и там другой мусор ))
А преобладание нулей в мусоре не удивительно, т.к. очень часто память обнуляется при выделении.
...
Рейтинг: 0 / 0
почему так?
    #40080394
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MCVC2019 не компилирует
Код: plaintext
1.
error C4700: uninitialized local variable 's' used
...
Рейтинг: 0 / 0
почему так?
    #40080407
EvLaUy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,
Ваш вопрос напоминает анекдот про дискуссию двух раввинов - можно ли считать кошерным яйцо, снесенное курицей в субботу?
...
Рейтинг: 0 / 0
почему так?
    #40080434
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
MCVC2019 не компилирует
Код: plaintext
1.
error C4700: uninitialized local variable 's' used


SDL включён?
...
Рейтинг: 0 / 0
почему так?
    #40080449
бабушкин зайчик
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct S {
    int a,b,c;
};

int main(int argc, char *argv[])
{
    S s;
    cout << s.a << endl // 32767
         << s.b << endl // 0
         << s.c << endl // 0
    ;
}



int и uint выдают:
32764-7 (4 варианта)
0
0

но если заменить на short/ushort, то 3 ноля...
шо за?
во1, почему не всегда 3 ноля?
а во2, почему 4-7 ?

забавно, что это и не мусор, оно и сейчас так выдаёт
мусор появляется, если задействовать И short, И int...
...
Рейтинг: 0 / 0
почему так?
    #40080452
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
бабушкин зайчик
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct S {
    int a,b,c;
};

int main(int argc, char *argv[])
{
    S s;
    cout << s.a << endl // 32767
         << s.b << endl // 0
         << s.c << endl // 0
    ;
}



int и uint выдают:
32764-7 (4 варианта)
0
0

но если заменить на short/ushort, то 3 ноля...
шо за?
во1, почему не всегда 3 ноля?
а во2, почему 4-7 ?

забавно, что это и не мусор, оно и сейчас так выдаёт
мусор появляется, если задействовать И short, И int...

Попробуйте VS. В отладочной версии там по идее всё должно быть затёрто неким magic number, например, 0xcb.
...
Рейтинг: 0 / 0
почему так?
    #40080457
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
забавно, что это и не мусор, оно и сейчас так выдаёт
мусор появляется, если задействовать И short, И int...

Ничего странного. Перед тем как вызвать main() происходит инициализация библиотеки С++, вызываются какие-то функции, которые пишут в стэк , при возвращении записанное остается в памяти под стэком, где выделяется память под твою переменную s.
Т.к. каждый раз вызываются одни и те же функции, то и мусор получается одинаковый.
...
Рейтинг: 0 / 0
почему так?
    #40080461
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Dima T
MCVC2019 не компилирует
Код: plaintext
1.
error C4700: uninitialized local variable 's' used


SDL включён?

Это что?
Проект "console application" с дефолтными настройками.
...
Рейтинг: 0 / 0
почему так?
    #40080467
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

возьми
int8_t a,b,c;
будет интереснее
...
Рейтинг: 0 / 0
почему так?
    #40080490
Dima T
Т.к. каждый раз вызываются одни и те же функции, то и мусор получается одинаковый.

нет, если к int добавить short
...
Рейтинг: 0 / 0
почему так?
    #40080491
Alex_Ustinov
бабушкин зайчик,

возьми
int8_t a,b,c;
будет интереснее

насколько я понимаю, int и short - это некие базовые типы, которые аж в процессоре зашиты
а int8_t - это уже класс в C++
и выдаёт он пустышки
...
Рейтинг: 0 / 0
почему так?
    #40080494
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
Alex_Ustinov
бабушкин зайчик,

возьми
int8_t a,b,c;
будет интереснее

насколько я понимаю, int и short - это некие базовые типы, которые аж в процессоре зашиты
а int8_t - это уже класс в C++
и выдаёт он пустышки

int8_t тоже базовый, usigned chаr, это не класс.
short - это int16_t
int - int32_t

И про выравнивание ты забыл, почитай эту статью .
...
Рейтинг: 0 / 0
почему так?
    #40080499
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчикнет, если к int добавить short

Что, серьёзно при каждом запуске другие значения? Покажешь последовательность?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080501
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

добавь d
int8_t a,b,c,d;

так то же интересно в сравнении
...
Рейтинг: 0 / 0
почему так?
    #40080502
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
petrav
пропущено...

SDL включён?

Это что?
Проект "console application" с дефолтными настройками.

Secure Development Lifecycle. Возможно ещё включён warning as errors.
...
Рейтинг: 0 / 0
почему так?
    #40080504
Dima T
И про выравнивание ты забыл, почитай эту статью .

где это я забыл про выравнивания? Там есть что выравнивать? Как про них вообще можно забыть?

Dimitry Sibiryakov
бабушкин зайчикнет, если к int добавить short

Что, серьёзно при каждом запуске другие значения? Покажешь последовательность?..
0
0
-804835104
22088
0
26272

0
0
-1760038688
21873
0
-29552

0
0
904065248
21908
0
-6032

0
0
1540518112
22076
0
-22128

3 int 3 short
...
Рейтинг: 0 / 0
почему так?
    #40080509
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

какие нить фоновые процессы долбят память.
Да не показатель это
Допустим у меня
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct S {
    int a,b,c;
};

int main(int argc, char *argv[])
{
    S s;
    cout << s.a << endl // 0
         << s.b << endl // 16
         << s.c << endl // 0
    ;
}


добавим d
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
struct S {
    int a,b,c,d;
};

int main(int argc, char *argv[])
{
    S s;
    cout << s.a << endl // 0
         << s.b << endl // 0
         << s.c << endl // 0
         << s.d << endl // 0
    ;
}

т.е. b уже 0
...
Рейтинг: 0 / 0
почему так?
    #40080510
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик*3 int 3 short*

Увеличив размер структуры, ты увеличил количество захватываемого ею мусора и добрался до
областей, где RTL держало переменную информацию типа текущего времени и адреса возврата из
последнего прерывания таймера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080513
да всё это понятно
непонятно, почему там строго нули имеют место
всегда, если short и всегда 2 ноля, если int
и 32764-7
...
Рейтинг: 0 / 0
почему так?
    #40080516
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как тебе уже сказали: раскручивай ВСЮ цепочку ассемблера, начиная с кодов инициализации
RTL. Тогда поймёшь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему так?
    #40080519
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,

это кришнаитский вопрос...
над ним лучше даже не задумываться.
Просто нужно всегда инициализировать переменные.
...
Рейтинг: 0 / 0
почему так?
    #40080522
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
всегда

Вы что, бесконечное число раз запускали, чтобы такое утверждать? )))
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 1 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему так?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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