C++BEGINNER阶乘程序,输出混乱

C++ BEGINNER factorial program, confusing output

本文关键字:输出 混乱 程序 阶乘 C++BEGINNER      更新时间:2023-10-16

我正在MIT OCW上介绍C++,下面的代码在教授的第一道题集中给出,作为计算阶乘的基本程序,还有一些相关的问题。

#include <iostream>
using std::cout;
using std::cin;
int main () 
{
    short number;
    cout << "Enter a number: ";
    cin >> number;
    cout << "The factorial of " << number << " is ";
    int accumulator = 1;
    for(; number > 0; accumulator = (accumulator * (number--)));
    cout << accumulator << '.n';
    system("pause>nul");
    return 0;
}

第一个问题是:"当您输入以下值时会得到什么:0、1、2、9、10?"

答案部分写着"0:1;1:1;2:2;9:362880;10:3628800",但对我来说并不是这样。我的程序输出"11768",继续每个明显正确的答案,我不知道为什么。

我看到的答案集是:"0:111768;1:111768;2:211768;9:36288011768;10:362880011768"

也许代码中有什么错误,但我看不出来。我正在使用Visual Studio 2012。也许有人有主意?谢谢你抽出时间。

更改:

cout << accumulator << '.n'; 

收件人:

cout << accumulator << ".n";

编译器正在将多字符文字'.n'转换为整数11768。此行为是由实现定义的。

可能应该学会使用endl,否则您会在某个时候被未冲洗的流弄糊涂。我知道我有。并不是说这是一个未冲洗的流问题,但如果OP习惯性地使用endl,他就不会有这个问题。