c语言问题求解: 1:m是void型,怎么可以int k=m()? 2:k=m()如果没错,为...
发布网友
发布时间:2024-10-24 09:33
我来回答
共2个回答
热心网友
时间:2024-11-09 04:01
这个是一个很有意思的一个题。
首先 m的返回值 是void, 本来不应该有返回值的。
如果前面声明了void m(); 那么在k=m()这里就会编译报错了。
但实际上, 没声明, 对于没声明的, C语言编译的时候就不去判断它对不对了。 于是k=m()就这样编译通过了。
但实际上 m并没有返回值。 那么程序又要把m返回值赋值给k
这时赋值其实是把一个特定的, 用来存放返回值的空间的值, 赋值给了k
m没有返回值, 自然不会写这个空间了, 那这个空间就是上次调用函数的时候写的。 上一个函数是printf, 于是实际赋值给k的 是printf的返回值。
printf输出了"hello"共计五个字符, 返回5
这样 k=5输出
hello5
热心网友
时间:2024-11-09 04:09
不好运行的,Error;相信自己的判断