Почему использование + = для обнуляемого типа приводит к дефекту FORWARD_NULL - PullRequest
5 голосов
/ 08 марта 2019

Без сомнения, есть другие, возможно, лучшие способы сделать это, но я пытаюсь понять, что здесь происходит.

В приведенном ниже примере coverity сообщает о дефекте FORWARD_NULL в четвертой строке.

double? foo = null;
double bar = 1.23;
foo += bar;
System.Windows.Point point = new System.Windows.Point(foo,bar);  

сообщает:

assign_zero: Назначение: foo = null.

на линии бара foo + =.

в + = Оператор (C # Reference) , я вижу, что x + = y эквивалентно x = x + y , а в Используя обнуляемые типы (Руководство по программированию на C +) , я вижу, что

Эти операторы [бинарный оператор] выдают нулевое значение, если один или оба операнда равны нулю

Так что же происходит?foo + = bar становится foo = foo + bar, а поскольку foo равно нулю, foo + bar равно нулю?

1 Ответ

5 голосов
/ 08 марта 2019

Так что же происходит?foo + = bar становится foo = foo + bar, а поскольку foo равно нулю, foo + bar равно нулю?

Да.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...