C# 为什么c编译器不在任何数字之前读取0?
正如这里你可以看到,当我进入09或08它将删除它,并打印9和8。当在C++编译器上运行相同的代码时,它将0和9打印在不同的索引上,为什么两种语言的编译器都是这样的?为什么他们不读取一个数字?int.Parse的行为。。其他字符串到数字的解析函数是去掉与数值无关的任何前导字符零 如果希望保留前导零,请将数组的数据类型更改为字符串 现在您已经发布了一些代码,下面是一些建议和评论C# 为什么c编译器不在任何数字之前读取0?,c#,types,C#,Types,正如这里你可以看到,当我进入09或08它将删除它,并打印9和8。当在C++编译器上运行相同的代码时,它将0和9打印在不同的索引上,为什么两种语言的编译器都是这样的?为什么他们不读取一个数字?int.Parse的行为。。其他字符串到数字的解析函数是去掉与数值无关的任何前导字符零 如果希望保留前导零,请将数组的数据类型更改为字符串 现在您已经发布了一些代码,下面是一些建议和评论 int n; int[] ar = new int[50]; Console.Write(
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();
您的数组正在存储整数,因为01和1具有相同的数值,所以我们不区分它们
如果需要保留前缀零,则需要将它们另存为字符串。整数是整数,而不是字符串 所以09和9一样,和00000009一样。
至少在x86上,它们都在内部由位模式00000101 00000000 00000000表示。我认为最好将数组转换为字符串数组,然后执行该操作。因为当整数09和9没有区别时,数值才是最重要的。但是当它是一个字符串时,它就不同了,所以使用字符串数组来进行操作,如果你必须只想显示它,那么字符串无论如何都是更好的。如果你想要整数,然后把它转换成整数,有API可用。控制台。Read*Line*不同于cin>>。
因此,当您没有显示任何代码时,很难知道发生了什么。。。当在执行时输入数字时,很难看出编译器与此有什么关系。数组的数据类型是什么?如何读取命令行中的内容?看到一些代码会很有帮助。我编辑了这个问题并给出了我的代码示例……你确实说分析器播种它忽略了前0个,因为没有整数开始,0.先生,我假设C编译器的值和01和1一样,但是C++为什么在不同的索引上打印它呢?检查我的这个问题,谢谢。我对C++的标准行为不太了解,但是你又把字符串放入了一个整数数组,除了没有先将它们解析为整数。可能是你在那里碰到的字符和它们的整数值。一个好的建议是总是知道变量的数据类型。在C++的情况下,检查STDIN给你的是什么,并确保你处理的内容是正确的。谢谢这个好的例子和答案。你能解释一下C++ StasOffFuff.com /Strus/6323 85/ARRAI-初始化吗?谢谢?- 1:这不回答问题。CIN是C++,不是C。
int n;
bool validNumber;
do {
validNumber = true;
Console.Write("Enter the size of array:");
if(!int.TryParse(Console.ReadLine(), out n)) // use TryParse instead of Parse to avoid formatting exceptions
{
Console.WriteLine("Not a number, please try again");
validNumber = false;
}
} while(!validNumber); // re-prompt if an invalid number has been entered
int[] ar = new int[n]; // declare the array after the size is entered - your code will break if the user enters a number greater than 50
// change to "string[] ar = new string[n];" if you want to keep the full value entered
for (int i = 0; i < n; i++)
{
bool valid;
do {
valid = true;
int num;
string value = Console.ReadLine();
if(int.TryParse(value, out num)) // again - use tryparse.
ar[i] = num; // change to "ar[i] = value;" if you're using a string array.
else {
Console.WriteLine("Please enter that again - not a number");
valid = false;
}
} while(!valid);
}
for (int i = 0; i < n; i++)
{
Console.WriteLine("AR["+i+"]="+ar[i]);
}
Console.Read();