Я сделал преобразование типа переменной b (объявление вне области видимости) в области видимости и присвоил b новое значение val, и когда область действия заканчивается, значение b представляется неправильным.
Этопроисходит на моем MacBook, версия GCC которого является GCC-8 (Homebrew GCC 8.3.0) 8.3.0.Я попробовал тот же код на моем ноутбуке с Linux, чья версия gcc - 5.4.0, и код работает хорошо.
std::vector<int> a = {1,2,3,4};
int b;
{
size_t i = 0, b = a[i];
//this time type of b is size_t
++i;
b = a[i];
}
std::cout << "b = " << b << std::endl;
На моем Mac результат равен b = 0
На Ubuntu 16 результат равен b = 1
В чем разница между двумя версиями gcc при преобразовании типов?
Или это баг?