【发布时间】:2011-05-10 16:14:16
【问题描述】:
void main()
{
int y=0;
clrscr();
printf("%d\n",Testing());
y=Testing();
printf("%d",y);
getch();
}
int Testing()
{
int x=100;
//return x;
}
Result
512
4
我没有从测试函数返回任何东西仍然值来了吗?
还有一个问题
void main()
{
char Testing();
int y=0;
clrscr();
printf("%d\n",Testing());
if(Testing())
printf("if--exi");
else
printf("else--exi");
getch();
}
char Testing()
{
char y;
//return y;
}
Result
0
if--exi
如果 printf 被注释,那么结果是
else--exi
为什么会这样
【问题讨论】:
-
我认为没有返回的函数将是未定义的行为,并且至少会触发一个警告......
-
有警告但它仍在工作 内部发生了什么?
-
为什么同时标记C和C++?这些语言在这方面有很大的不同。
-
Er... 通过删除 [C++] 标记,您基本上使 Mark B 的答案无效,您自己将其标记为已接受。结论是正确的,但该答案中给出的解释是特定于 C++ 的,即在 C 语言的上下文中,该解释在技术上是不正确的。
标签: c