c中格式输出的有关问题

c中格式输出的问题
#include <stdio.h>
void main()
{
    int y=23456;
    printf("y=%#8o\n",y);
}

输出结果为y=   04630
(04630前有3个空格)
请问“#”在这里起什么作用?
------解决思路----------------------
引用:
你在什么环境下打印的?我的输入和你不一样

输出
------解决思路----------------------
这里的#是起到打印前缀0或者0x的作用,这里用的是8进制,所以会打印前缀0