Member 12914219 Ответов: 3

Что не так с этим кодом...я пытаюсь поменять местами два числа? //


я не знаю, что не так с этим кодом ...значения x и y - это что-то из этого мира .....

Что я уже пробовал:

использование пространства имен std;

тап_п()

{
int x, y, z, t;
cout<< " x=";
cin>> x;
cout<< " Y=";
cin> & gt; y;
x=z;
y=t;
cout<< " после замены";
cout<< "значение y"< & lt; z< & lt;endl;
cout<< "значение x"< & lt; t< & lt;endl;



возвращает 0;}

Michael_Davies

Вы ничего не меняете местами, z & t не инициализируются, и вы перезаписываете входы в x & y вместе с ними.

Вы также говорите "значение x", а затем выводите t, которое не инициализируется.

Инициализируйте z & t до 1234 и 4321 и посмотрите, что произойдет.

3 Ответов

Рейтинг:
26

PeejayAdams

Вы устанавливаете x в z, но z никогда не инициализируется, поэтому просто будет иметь какое-то случайное значение, то же самое с t (которое вам все равно не нужно).


Правильная логика должна быть Z = Х, Х = г, г = з.


Member 12914219

различны ли x=z и z=x?

PeejayAdams

Да. Присвоение идет налево, так что X = Z будет дать х значение Z, а точки Z = Х даст значение X до Z.

Если бы мы присваивали значение из значения, а не переменной, мы бы сказали, например, "x = 2", что фактически читается как " Пусть x имеет значение 2." Точно так же, когда мы говорим "x = z", мы говорим: "пусть x имеет значение, присвоенное в данный момент z."

Рейтинг:
2

Patrice T

Это наоборот,

x=z;
y=t;

и должен быть заменен на
z=x;
t=y;

но даже с этой поправкой это не своп.

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

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
15

OriginalGriff

ГМ...тебе нужно научиться пользоваться отладчиком...

int x,y,z,t;
Объявляет четыре переменные, но не дает им никакого "разумного" значения.
cout<<"x=";
cin>>x;
cout<<"Y=";
cin>>y;
Считывает значение в x и y
x=z;
y=t;
Перезаписывает значения, которые Вы читаете от пользователя, неинициализированными значениями, которые не содержат полезных данных.
Это не обмен.
Чтобы поменяться местами, вам не нужно z, просто t:
t = x;
x = y;
y = t;