我的程序打印出与预期不同的结果
my program prints out a different result from what expected
所以每次我尝试输入 "n" 时,第一行都会输出一个等于 n+1 的数字。所以请帮助我我做错了什么!谢谢
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include "../../../std_lib_facilities.h"
int main()
{
cout << "Enter a number: ";
double n;
cin >> n;
cout << "n: " << n
<< "\n++n: " << ++n
<< "\nThree times of n: " << n * 3
<< "\nTwice n: " << n + n
<< "\nHalf of n: " << n / 2
<< "\nSquare root of n " << sqrt(n);
int m = n;
cout << "\nInteger of n: " << m
<< "\nRemainder when divide n by 2: " << m % 2
<< "\nDivision when divide n by 2: \n" << m / 2;
keep_window_open();
}
n++
更改 n
的值。 None 你的其他表达方式。你得到 n+1
的事实很清楚地表明 n++
在所有其他 "stuff" 输出之前被评估(因此 n
已经递增)。
您正在使用 n
并在同一个表达式中执行 n++
(实际上递增 n
)。这是undefined behavior。
所以每次我尝试输入 "n" 时,第一行都会输出一个等于 n+1 的数字。所以请帮助我我做错了什么!谢谢
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include "../../../std_lib_facilities.h"
int main()
{
cout << "Enter a number: ";
double n;
cin >> n;
cout << "n: " << n
<< "\n++n: " << ++n
<< "\nThree times of n: " << n * 3
<< "\nTwice n: " << n + n
<< "\nHalf of n: " << n / 2
<< "\nSquare root of n " << sqrt(n);
int m = n;
cout << "\nInteger of n: " << m
<< "\nRemainder when divide n by 2: " << m % 2
<< "\nDivision when divide n by 2: \n" << m / 2;
keep_window_open();
}
n++
更改 n
的值。 None 你的其他表达方式。你得到 n+1
的事实很清楚地表明 n++
在所有其他 "stuff" 输出之前被评估(因此 n
已经递增)。
您正在使用 n
并在同一个表达式中执行 n++
(实际上递增 n
)。这是undefined behavior。