public const Int64 MinValue = --9223372036854775808;
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 14.04.19 17:55
Оценка: 3 (1)
Что-то я впадаю в ступор от определения Int64.MinValue, которое мне показывает студия по F12 (VS2017, VS2019):

  //
  // Summary:
  //     Represents the smallest possible value of an Int64. This field is constant.
  public const Int64 MinValue = --9223372036854775808;


Зачем тут декремент?

Это "декомпилятор" студии так чудит или так и задумано?

На всякий случай посмотрел как выглядит _I64_MIN в плюсах:

// minimum signed 64 bit value
#define _I64_MIN    (-9223372036854775807i64 - 1)
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: public const Int64 MinValue = --9223372036854775808;
От: romangr Россия  
Дата: 14.04.19 18:13
Оценка: 3 (1)
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Что-то я впадаю в ступор от определения Int64.MinValue, которое мне показывает студия по F12 (VS2017, VS2019):


КД>
КД>  //
КД>  // Summary:
КД>  //     Represents the smallest possible value of an Int64. This field is constant.
КД>  public const Int64 MinValue = --9223372036854775808;
КД>


КД>Это "декомпилятор" студии так чудит или так и задумано?


Похоже на декомпилятор.

В исходниках так:
public const long MinValue = unchecked((long)0x8000000000000000L);
Re: public const Int64 MinValue = --9223372036854775808;
От: nikov США http://www.linkedin.com/in/nikov
Дата: 14.04.19 18:35
Оценка: 3 (1)
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Что-то я впадаю в ступор от определения Int64.MinValue, которое мне показывает студия по F12 (VS2017, VS2019):


КД>
КД>  //
КД>  // Summary:
КД>  //     Represents the smallest possible value of an Int64. This field is constant.
КД>  public const Int64 MinValue = --9223372036854775808;
КД>


КД>Зачем тут декремент?


КД>Это "декомпилятор" студии так чудит или так и задумано?


Это баг в metadata viewer.
Re[2]: public const Int64 MinValue = --9223372036854775808;
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 15.04.19 07:25
Оценка:
Здравствуйте, nikov, Вы писали:

N>Это баг в metadata viewer.


Мне нужно делать какие-либо телодвижения в сторону "VS Feedback" или оно уже "само" исправится?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: Оффтоп
От: Sharov Россия  
Дата: 15.04.19 09:34
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>
КД>   (-9223372036854775807i64 - 1)
КД>


А енто что за нотация такая?
Кодом людям нужно помогать!
Re[3]: public const Int64 MinValue = --9223372036854775808;
От: nikov США http://www.linkedin.com/in/nikov
Дата: 15.04.19 14:09
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Мне нужно делать какие-либо телодвижения в сторону "VS Feedback" или оно уже "само" исправится?


Да, нужно. Судя по всему, metadata viewer пытался изобразить `-Math.Abs(-9223372036854775808)`, что есть `-(-9223372036854775808)`, но скобки забыли, и унарные минусы склеились в оператор декремента. Число -9223372036854775808 являтся противоположным самому себе в 64-битной двоичной арифметике, а 9223372036854775808 уже выходит из диапазона представимых чисел.
Re[4]: public const Int64 MinValue = --9223372036854775808;
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 15.04.19 17:15
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Коваленко Дмитрий, Вы писали:


КД>>Мне нужно делать какие-либо телодвижения в сторону "VS Feedback" или оно уже "само" исправится?


N>Да, нужно.


Полез на VS Feedback, а там такое уже есть и ссылается на гитхаб.

На гитхабе сказали — проверь на VS2019.

Я проверил — оказывается в 2019 уже пофикшено. Наверное с 2019 — это я вчера напутал.

Но в VS2017 эта бага точно есть
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: public const Int64 MinValue = --9223372036854775808;
От: vvv848165@ya.ru  
Дата: 16.04.19 12:15
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД> public const Int64 MinValue = --9223372036854775808;


В 2010 студии всё нормально — один минус
проблема действительно в новых ...

Ну и майкрософт ...

Спасибо за тему!!!
Re[2]: Оффтоп
От: pugv Россия  
Дата: 16.04.19 13:42
Оценка: 6 (1)
Здравствуйте, Sharov, Вы писали:

S> А енто что за нотация такая?


C Integer Constants. Конкретно i64 — Microsoft specific.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.