在调试器中添加两个整数会产生意外的输出

时间:2015-05-22 22:44:29

标签: int lldb arithmetic-expressions

我觉得这很傻,但我尽可能地调试了这个。我将两个整数加在一起,得到非确定性随机字母作为输出。知道发生了什么吗?

enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

po代表打印对象,因此它可能正在创建指针。请尝试改为:e minutes * 60 + seconds

答案 1 :(得分:0)

权利po应该只是拒绝打印任何不是对象指针的东西,但是根据大众的要求,如果表达式没有产生,我们就会打印出表达式结果的值。一个对象指针。我认为人们习惯于使用" po"一直......

这有点方便,但让事情变得混乱,因为如果你想要的数字是" po"碰巧也是一个对象指针,然后你会看到对象的描述,而不是数字。

只要唯一的对象是合法的ObjC指针值,这种混乱就没什么大不了的,因为指针在记忆中处于奇怪的位置,并且你不会在普通的过程中出现这些数字东西的。但有一段时间后,ObjC又添加了#34;标记指针" - 哪些是ObjectiveC对象,其内容(小字符串,小整数等)实际上将适合指针..他们窃取低位使自己看起来像一个非法指针,然后数字的其余部分是类型&内容。由于很多原因,这非常酷,但它使这个问题变得更糟,因为现在有一个更大的整数类看起来像对象实例。

外卖正如麦克沃思上面所说,不要使用" po"打印不是对象的东西。