avi*_*irk 0 c# c++ compiler-construction
我之前有人问过这个问题,但这次我想知道编译器C++
和之间的区别C#
.
static void Main(string[] args)
{
int n;
int[] ar = new int[50];
Console.Write("Enter the size of array= ");
n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
ar[i] = int.Parse(Console.ReadLine());
}
for (int i = 0; i < n; i++)
{
Console.WriteLine("AR[" + i + "]=" + ar[i]);
}
Console.Read();
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,当m为C#提供相同的输入时,它要求输入4个元素并在任何数字之前保留0.但是当我在C++中使用相同的输入时,它会将0与任何数字视为一个单独的输入,即使是给它一个数字,然后输入的输入也会减少.
甚至两种语言都遵循OOP方法.那么两个编译器之间有什么区别呢.为什么这些采取了大量不同的输入并产生不同的输出.
还有一个困扰我的原因是为什么C++编译器没有为最后一个元素读取0并打印7但是我的输入是07所以根据它的上面输出它应该是0而不是7.
这是一个完整的猜测,但Borland C++试图解释一个前导0为八进制的数字(这是一个标准约定,如十六进制的'0x'前缀).由于08不是有效的八进制数(只有0-7是八进制的有效数字),它将它分成两个输入.
尝试输入'010',如果程序打印出8,你就会知道它正在解释任何前导零为八进制的东西.
您还可以尝试通过将输入行更改为:强制cin将输入解释为十进制:
cin >> dec >> x[i];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
548 次 |
最近记录: |