为什么发生异常时不显示整数?

时间:2016-10-09 07:40:35

标签: c++

我有以下代码:

int main() 
{   
    int i = 0;
    cout << i;    //why is i not printed even though it is before the exception?  
    int j = 1 / i;   //divide by 0 
    j++;
    cout << i << j;
    return 0;
}

为什么不打印i?它应该打印,因为它是在异常发生之前。

但是什么都没有印刷,我只是得到了例外。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

这可能是因为流没有被刷新。在某些平台上,它会在每次输出后刷新,但在其他平台上则不会刷新。

所以,如果你冲洗它,你将获得0作为输出:

cout << i << flush; // 'flush' flushes the stream = displays everything immediately

答案 1 :(得分:-1)

我认为你可以参考这个函数puts(s),你可以写这个样本:

int main()
{
    char a[20];
    int b = 1;
    while(b>10)
    {
        gets(a);
        puts(a);
        b++;
    }
    return 1;
}

你会发现它们在所有输入完成后输出,所以输出有一个缓冲区。