bool返回值的函数如果不return会咋样
来源:互联网 发布:流寇起义知乎 编辑:程序博客网 时间:2024/04/29 14:54
bool try_ret_bool(int flag)
{
if (flag == 0) return true;
}
测试程序:
try_ret_bool(0) 毫无疑问返回true,控制之内
try_ret_bool(1) 返回?
接下去各种试验:
int val = is_existed(1) 发现返回的是22,究竟是啥原因呢?看看汇编吧,
0x08049641 <+31>: call 0x80496fa <try_ret_bool()>
0x08049646 <+36>: movzbl %al,%eax
0x08049649 <+39>: mov %eax,0x4(%esp)
0x0804964d <+43>: movl $0x8049d66,(%esp)
0x08049654 <+50>: call 0x80487b0 <printf@plt>
=> 0x08049659 <+55>: leave
0x0804965a <+56>: ret
(gdb) p *(int*)($esp+4)
$1 = 22
如果try_ret_bool提供返回值,会保存在暂顶+4的位置,一个指针偏移量,返回给eax寄存器作为最终返回值提供给printf进行格式化
所以,如果你不提供return返回值,$esp+4的位置就根据代码段解析的情况来取值。
但我不清楚
movzbl %al,%eax
movl $0x8049d66,(%esp)
的意思,需要后续再研究,大牛看到的可以帮我解答下
0 0
- bool返回值的函数如果不return会咋样
- bool型返回值函数,没写return语句的时候返回啥? 【转载】
- bool型返回值函数,没写return语句的时候返回啥?
- 调用bool函数的时候如果函数return false。自动打印日志并return false,有兴趣可以拿来玩玩用
- bool函数忘记写return(false)会怎样
- 回来bool的函数无return时返回true还是false
- php递归函数return会出现无法正确返回想要值的情况
- PHP在处理ajax返回值的时候,如果使用return如 return $result会失败,echo $result却没问题。解释原因如下: 1.ajax请求从服务器端读取返回值,而且这些返回值必
- return C++构造函数的返回值
- 043.Return Type 函数的返回值
- 043.Return Type 函数的返回值
- js中函数的返回值return
- API 的 BOOL返回值
- php 函数返回值 return
- JS函数返回值return
- 有返回值的函数return无法跳出
- 数组作函数的参数 和 返回值return
- 没有return关键字的main()函数返回值
- Java GC(垃圾回收)的工作原理
- Java代码 插入排序
- xhost
- java中的匿名内部类总结
- 展望未来,总结过去10年的程序员生涯
- bool返回值的函数如果不return会咋样
- 第十三周阅读程序四
- tar.xz 压缩与解压
- [Objective-C] 类、对象和方法
- Netty-Mina深入学习与对比(二)
- SVN卸载,修复,等问题:依赖服务或组无法启动.(0x8007042c)解决之一
- 我的solr入门学习
- 我的Cocos2d-x学习笔记(十二)内存管理
- 怎样进行内网穿透