搜索

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;相信自己的判断
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top