为什么编译器在执行时将0100整数位作为c中的64位?
why does compiler take 0100 integer digits as 64 in c when I execute?
这个程序主要是计算一个整数的位数。但是,当我给出不以零开头('100')的输入数字时,它工作正常但是如果我给出以零开头('00100')的输入,那么它会给出错误的输出。
示例:
1) 输入: 100
输出:3.这是预期输出。
2) 输入: 00100
输出:2.这是一个意外输出。
因为把'00100'整数取为整数'64'不知道为什么?
#include <stdio.h>
#include <stdlib.h>
int Digit_count(int);
int main(void)
{
int a;
a = Digit_count(00100);
printf("\nNumber of Digits = %d\n",a);
return 0;
}
/// function for count number of digits
int Digit_count(int a)
{
int p,digit;
p=a,digit=0;
printf("\n%d\n",p); // **This line code prints Output: 64**
while(p!=0)
{
p = p/10;
digit++;
}
return digit;
}
在 C 编程语言中,定义了几种不同的数值系统供程序员使用。
十进制数是我们习惯使用的标准 10 进制数,它们是您希望程序使用的,但在第 62 页的 C11 标准 here 中,它们定义以 0 开头的整数常量作为 octal 常量,这意味着以 8 为基数。
因此,当您将 100 传递给您的程序时,它会将其解释为十进制的 100,与八进制的 144 相同,而当您键入 0100 时,它会将其解释为八进制的 100,与十进制的 64 相同。
希望对您有所帮助!
这个程序主要是计算一个整数的位数。但是,当我给出不以零开头('100')的输入数字时,它工作正常但是如果我给出以零开头('00100')的输入,那么它会给出错误的输出。
示例:
1) 输入: 100
输出:3.这是预期输出。
2) 输入: 00100
输出:2.这是一个意外输出。
因为把'00100'整数取为整数'64'不知道为什么?
#include <stdio.h>
#include <stdlib.h>
int Digit_count(int);
int main(void)
{
int a;
a = Digit_count(00100);
printf("\nNumber of Digits = %d\n",a);
return 0;
}
/// function for count number of digits
int Digit_count(int a)
{
int p,digit;
p=a,digit=0;
printf("\n%d\n",p); // **This line code prints Output: 64**
while(p!=0)
{
p = p/10;
digit++;
}
return digit;
}
在 C 编程语言中,定义了几种不同的数值系统供程序员使用。
十进制数是我们习惯使用的标准 10 进制数,它们是您希望程序使用的,但在第 62 页的 C11 标准 here 中,它们定义以 0 开头的整数常量作为 octal 常量,这意味着以 8 为基数。
因此,当您将 100 传递给您的程序时,它会将其解释为十进制的 100,与八进制的 144 相同,而当您键入 0100 时,它会将其解释为八进制的 100,与十进制的 64 相同。
希望对您有所帮助!