#include <stdio.h>
int main () {
int n[ 10 ] = {002535}; /* n is an array of 10 integers */
int j;
/* output each array element's value */
for (j = 0; j < 10; j++ ) {
printf("Element[%d] = %d\n", j, n[j] );
}
return 0;
}
上面的代码运行并返回第一个元素等于1373.你能解释一下吗?由于提供的整数中的填充,我无法理解数字被更改的原因。
输出结果如下:
Element[0] = 1373
Element[1] = 0
...
Element[9] = 0
答案 0 :(得分:0)
在您的程序中,您正在初始化数组n
-
int n[ 10 ] = {002535};
由于前导零,数字002535被解释为八进制数字。
因此,这会将八进制值002535
分配给n[0]
,即数组n
中的第0个位置,其余的数组元素将使用{{1}进行初始化}。
在0
循环中,您使用格式说明符for
打印它。
002535八进制值的十进制等值是1373.这就是为什么你得到%d
为1373。
如果要打印八进制数作为输出,请使用Element [0]
格式说明符:
%o
如果您希望将小数2535作为数组for (j = 0; j < 10; j++ ) {
printf("Element[%d] = %o\n", j, n[j] );
的第一个元素,请删除前导零:
n
答案 1 :(得分:0)
以0
开头的整数文字被解释为八进制数。并且02535
八进制等效于十进制1373