忘写return有什么现象?
使用C语言,一直觉得没有return无所谓,直到被制裁。。
参考:
非void函数缺失返回值导致crash或结果异常的分析 - 知乎 (zhihu.com)
可以分析出:
没有写return 的话,eax的内容是在预期之外的。
例如更新参考内容的解析,其中的%eax可能是由其中的子函数返回的。
int res = print_data(data, 10);11db: 48 8d 45 d0 lea -0x30(%rbp),%rax11df: be 0a 00 00 00 mov $0xa,%esi11e4: 48 89 c7 mov %rax,%rdi11e7: e8 64 ff ff ff callq 1150 <print_data>11ec: 89 45 f8 mov %eax,-0x8(%rbp)
由此吐槽一下,为什么不默认给添加一个return呢~可能有高级的用法?
其他现象:
1.for循环后直接结束,没有return,居然出现for循环条件判断异常的情况,由于没有解析出汇编没有进一步的分析。