Если значение неинициализированной переменной не должно влиять на значение выражения, это все еще UB?

Это следующее из обсуждения , которое я думаю, заслуживает своего собственного вопроса.

В основном, является результатом этого неопределенного?

int x;
int y = 1 || x;

здесь есть два аргумента «здравый смысл»:

  1. математически говоря, независимо от того, какова ценность x , значение Y должно быть 1 .
  2. Из-за короткого замыкания x никогда не оценивается в любом случае.

Но контраргментация заключается в том, что у нас есть выражение, которое включает в себя неинициализированную переменную, поэтому все ставки выключены (теоретически).

В целом, если значение неинициализированной переменной не может повлиять на результат выражения, это «безопасно»? E.g.

int x;
int y = x - x;

Usual Отказ от ответственности: Конечно, я не защищаю когда-либо пишущий код, как это.

8
задан Community 23 May 2017 в 11:55
поделиться