usr*_*usr 1 c objective-c undefined-behavior
在C和C++中,空指针取消引用是未定义的行为.Objective-C怎么样?
换句话说,这个代码保证做什么?
*(long*)0 = 0;
Run Code Online (Sandbox Code Playgroud)
背景:我想知道这个答案是否可能触发未定义的行为,可能导致随机的事情,比如语句被优化,甚至更奇怪.
当然,我不认可这样做.不过,了解语言规则很重要.
小智 7
由于Objective-C只不过是C之上的面向对象层,纯C语句没有特殊的附加含义.根据这一点,在这种情况下,*(long*)0 = 0;就像在C中一样进行评估和解释(因为它是 C),因此它调用未定义的行为.因此,不保证做任何事情.