为什么没有return语句的main函数返回值12?
我编写了一个打印表格的程序。我没有在主函数中包含返回语法,但是无论何时我键入echo $?它显示12。
我的源代码:
#include <stdio.h>int main(void)
{
int ans,i,n;
printf("enter the no. : ");
scanf("%d",&n);
for(i=1;i<=10;i++)
{
ans = n*i;
printf("%d * %d = %d\n",n,i,ans);
}
}
我尚未编写return 12,但每次执行程序时它仍返回12。
谢谢。
回答:
正如swegi所说,这是未定义的行为。 正如史蒂夫·杰索普(Steve
Jessop)等人所说,在C89之前,它是一个未指定的值,并在C99中指定(观察到的行为与C99不符)。
在大多数环境中实际发生的情况是,最后一个值的返回值printf
保留在用于返回值的寄存器中。
因此,对于n == 0,它将是11;如果n是一位,它将是12;对于两位n,它将是14;对于三位n将是16,等等。
以上是 为什么没有return语句的main函数返回值12? 的全部内容, 来源链接: utcz.com/qa/399835.html