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

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

Войти
Регистрация
Восстановить пароль
 
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
#1

Локальные переменные в функции и её аргумент - C++

25.09.2012, 09:29. Просмотров 350. Ответов 1
Метки нет (Все метки)

Привет!
Пишу функцию перевода десятичного числа в текст (не обсуждайте зачем и правильно ли я делаю)
Суть такова, начало функции:
C++
1
2
3
4
5
6
7
8
9
void printFixedPoint(char* buffer, float data, int sign){
    float fval, dfval;<<вход: data=55.0
    int ival;
    dfval=10.0;  //        <<data=55.0
    while (fval>=1.0)
    {
        ival=9;
        fval=9*dfval;//<<fval=90.0 и при этом ВНИМАНИЕ!!! 
               //изменилась data=90.0
Почему аргумент функции внезапно принял значение локальной переменной? Порча стека???
MSVS2008

Добавлено через 2 минуты
опасения подтвердились. Адрес fval равен адресу data

Добавлено через 1 минуту
Но почему???? Это ж разные переменные? Одна - аргумент функции, другая локальная в функции?

Добавлено через 5 минут
у меня включён был Release. Поменял на Debug - адреса переменных стали разными.
В чём причина? Хитрый оптимизатор MSVS решил доказать, что он умнее меня и мне нужны не две, а одна переменная?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 09:29     Локальные переменные в функции и её аргумент
Посмотрите здесь:

Локальные переменные C++
Неинициализированные локальные переменные C++
C++ Неиспользуемые локальные переменные
С++ ООП локальные переменные C++
как в Code::Blocks просмотреть локальные переменные? C++
C++ Локальные переменные-классы
C++ Неинициализированные локальные переменные warning C4700
C++ Как сделать так, чтобы локальные переменные не обнулялись автоматически?
C++ Asm локальные переменные, объявленные в c++
C++ Локальные, глобальные переменные и функции
Variadic templates локальные переменные C++
C++ Локальные переменные или прямое обращение к get-объекта класса?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6446 / 4912 / 451
Регистрация: 14.02.2011
Сообщений: 16,283
25.09.2012, 09:45     Локальные переменные в функции и её аргумент #2
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Почему аргумент функции внезапно принял значение локальной переменной? Порча стека???
MSVS2008
Добавлено через 2 минуты
опасения подтвердились. Адрес fval равен адресу data
А ты что используешь где то data ??? нет.
вот компилятор и решил поставить на её место fval чтобы размер стека не раздувать
оптимизация, однако
Yandex
Объявления
25.09.2012, 09:45     Локальные переменные в функции и её аргумент
Ответ Создать тему
Опции темы

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