Как вы думаете, можно ли использовать в арифметическом выражении оператора присваивания...

0 интересует 0 не интересует
221 просмотров

Как вы думаете, можно ли использовать в арифметическом выражении оператора присваивания неопределенную переменную? К каким последствиям это может
привести?


спросил от (39 баллов) в категории Информатика
оставил комментарий от Архангел (142k баллов)
0 0

Как повезет. Но чаще всего к ужасным: программа или ведет себя непредсказуемо, или просто аварийно завершается.

1 Ответ
0 интересует 0 не интересует
ответил от Бакалавр (13.9k баллов)

1. Если имеется в виду язык Pascal, то получим следующее:
var: a;
//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)
begin
  readln(a);
  b:=a+a;
  writeln (b);
end.

Program50.pas(5) : Неизвестное имя 'b'

2. Попробуем такой вариант на Python

a =int(input())
b = a+a
print(b)


При вводе а получим на выходе 10

Получается, что в Pacal требуется объявлять переменные в секции переменных, или в любом месте программы можно объявить переменную с помощью служебного слова var для PascalABC.net. Первый код можно переписать так, и он будет работать:

var: a;
//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)
begin
  readln(a);
  var b:=a+a;
  writeln (b);
end.

Рузультат при введенном значении 5 равен 10





оставил комментарий от Архангел (142k баллов)
0 0

Это верно, если речь о необъявленной переменной. Но чаще неопределенной называют переменную, которой не присвоили значение, т.е. неинициализированную.

оставил комментарий от Бакалавр (13.9k баллов)
0 0

Да, главная беда freepascal, переменнная получает место в памяти а там мусор ...

оставил комментарий от Архангел (142k баллов)
0 0

Это не беда, это совершенно правильное поведение переменной. В С/С++ так все объекты себя ведут.

оставил комментарий от Архангел (142k баллов)
0 0

Если программист не выполнил инициализацию - значит ему так надо было. Почему компилятор насильно инициализирует числовую переменную нулем?

оставил комментарий от Бакалавр (13.9k баллов)
0 0

Да, наверное это логичнее чем при объявлении переменных их автоматически инициализировать

...