Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么C++和C编译器的输出不同? 以前我曾问过这个问题,但这次我想知道C++编译器和C. < /P >的区别。 数组的C编码 输出 数组的C++编码 输出_C#_C++_Compiler Construction - Fatal编程技术网

C# 为什么C++和C编译器的输出不同? 以前我曾问过这个问题,但这次我想知道C++编译器和C. < /P >的区别。 数组的C编码 输出 数组的C++编码 输出

C# 为什么C++和C编译器的输出不同? 以前我曾问过这个问题,但这次我想知道C++编译器和C. < /P >的区别。 数组的C编码 输出 数组的C++编码 输出,c#,c++,compiler-construction,C#,C++,Compiler Construction,现在我的问题是,当m为C给出相同的输入时,它要求输入4个元素,并在任何数字前留下0。但是当m在C++中输入相同的输入时,它考虑0个具有任意数字的独立输入,甚至M给它一个数字,并且输入较少的输入,然后我输入。 甚至两种语言都遵循OOP方法。那么这两种编译器之间的区别是什么呢。为什么它们需要大量不同的输入并产生不同的输出 另外,这也困扰了我,为什么C++编译器不为最后一个元素读0,打印7,但是我的输入是07,所以根据它上面的输出,它应该是0,而不是7。在两种不同的语言中使用两个不同的函数来做相同的事

现在我的问题是,当m为C给出相同的输入时,它要求输入4个元素,并在任何数字前留下0。但是当m在C++中输入相同的输入时,它考虑0个具有任意数字的独立输入,甚至M给它一个数字,并且输入较少的输入,然后我输入。 甚至两种语言都遵循OOP方法。那么这两种编译器之间的区别是什么呢。为什么它们需要大量不同的输入并产生不同的输出


另外,这也困扰了我,为什么C++编译器不为最后一个元素读0,打印7,但是我的输入是07,所以根据它上面的输出,它应该是0,而不是7。在两种不同的语言中使用两个不同的函数来做相同的事情,会给您带来微妙的不同结果,这一点也不奇怪。如果您想知道它们各自的功能,请查看文档

更具体地说,C++中的CIN>i当然不以与C.中的PARTIONSOL.Read Lead相同的方式来执行,例如,C++版本能够从空间分隔的同一行读取多个数字,而C版本不能够读取。 但是对于您的特定示例,这看起来要么像您使用的编译器中的一个bug,要么可能是规范不清楚。如果在VisualStudio中编译C++代码,它的行为与C版本相同。


我也不确定你到底是什么意思,但是你的C++代码肯定没有遵循OOP方法。我并不是说它应该,只是它不是。

< p>这是一个完全的猜测,但是Borland C++试图用一个前导0来解释一个数字,它是一个标准的约定,就像十六进制的“0x”前缀。因为08不是一个有效的八进制数,所以只有0-7是有效的数字,它是八进制数,它把它分成两个输入

试着输入“010”,如果程序打印出8,你就会知道它将任何前导零解释为八进制

您也可以尝试通过将输入行更改为以下内容来强制cin将输入解释为十进制:

cin >> dec >> x[i];

这可能是因为Turbo C++编译器的C++实现错误。是时候查找标准了……不知道你的编译器是什么,但是当我运行你的C++代码时,它会产生与C一个相同的结果。它是博兰的老编译器。埃里克在哪里。我想对他来说不是星期天。。。。。。;请解释为什么C++代码只读取3个输入,而在上面的例子中C读取4个。@ JaveD,就像我说的,它对我来说不是这样。我想它可能是Turbo C++中的编译器错误。我也想知道这个,并且同意@ JavedThe C++代码正在读取4个输入:0, 8, 98和7。代码使用的库不符合标准。08不是有效的八进制数,因此库在0和8之间看到一个不可见的屏障。它把0作为一个数字,8个读为另一个。它关于C++的Borland编译器的正确性,那么C为什么不确定八进制NO……并且看到@ PATAR LVANVOVI的注释没有比它更好的答案,因为它是这样工作的。C.解析数字字符串的文档没有提到八进制,C编译器也不能将前导0的数字识别为八进制,所以微软显然不支持.NET中的八进制。至于C++,我确信没有定义数字应该如何解析的标准,所以每个实现都会做任何它想做的事情。
int main()  
{  
    clrscr();  
    int x[10];  
    int n;  
    cout << "Enter the array size= ";  
    cin >> n;  
    cout << "Enter the elements for array= ";  
    for(int i = 0; i < n; i++)  
    {  
        cin >> x[i];  
    }
    for(int i = 0; i < n; i++)  
    {  
        cout << "x[" << i << "]=" << x[i] << "\n";  
    }   
    getch();  
    return 0;  
}
cin >> dec >> x[i];