Оператор присваивания " cn = n " равен
, временно присваивая значение n cn ,
до того, как n будет изменено в то время как l oop.
Вот программа с добавленными операторами печати, чтобы проиллюстрировать, как изменяются значения:
#include <iostream>
using namespace std;
int main() {
int n, cn, x = 0, p = 1;
cout << "Enter the value of n: ";
cin >> n;
cout << " n = " << n << " , cn = " << cn << "\n";
cout << "Temporarily assigning the value of n to cn \n";
cn = n;
cout << " n = " << n << " , cn = " << cn << "\n";
while(n) {
if ( n%10 > x ) {
x = n%10;
}
n /= 10;
}
x++;
cout << "Intermediate value of n = " << n << "\n";
while( cn ) {
n = n+cn%10*p;
p *= x;
cn /= 10;
}
cout<<"Final value of n = " << n << "\n";
return 1;
}
Вывод:
Enter the value of n: 12345
n = 12345 , cn = 0
Temporarily assigning the value of n to cn
n = 12345 , cn = 12345
Intermediate value of n = 0
Final value of n = 1865
Другой вопрос:
Что произойдет, если cn = n используется в первое утверждение программы?
IE,
int n, cn=n, x = 0, p = 1;
Ответ: Это назначит случайное значение cn.
Вот демонстрация того, что будет сделано с помощью оператора int n, cn = n :
#include <iostream>
using namespace std;
int main() {
int n, cn=n, x = 0, p = 1;
cout << "Enter the value of n: ";
cin >> n;
cout << " n = " << n << " , cn = " << cn << "\n";
while(n) {
if ( n%10 > x ) {
x = n%10;
}
n /= 10;
}
x++;
cout << "Intermediate value of n = " << n << "\n";
while( cn ) {
n = n+cn%10*p;
p *= x;
cn /= 10;
}
cout<<"Final value of n = " << n << "\n";
return 1;
}
Вывод int n, cn = n:
Enter the value of n: 12345
n = 12345 , cn = 4196992
Intermediate value of n = 0
Final value of n = 207740