在这两者之间就终止角色进行投射时会发生什么?在C99 Objective-C。
答案 0 :(得分:4)
我认为在这个答案中你的系统中的字符是8位。
如果您的架构使用unsigned char
作为char
类型,则绝对不会发生任何事情。
如果您的架构使用signed char
作为char
类型,那么char的负值将会回绕,从而导致可能出现意外结果。但是,终止空字符永远不会发生这种情况。
请注意,通过“强制转换”没有任何实际发生,您只需告诉编译器以不同方式解释内存中的某个位置。这种解释上的差异会产生演员的实际(侧面)效果。
答案 1 :(得分:0)
如果char
和uint8_t
是兼容类型(它们应该在大多数当前台式计算机上),那么指向该类型对象的指针具有相同的表示和对齐要求,因此转换应该没有问题(隐式地,或明确地使用演员表)彼此之间。
如果它们兼容,那么指向的值应该被平等对待,无论它们被解释为什么类型。
注意:我并非100%确定uint8_t
和char
与签名字符的实现兼容。
如果类型不兼容,则调用未定义的行为,任何事情都可能发生:很可能发生的事情是,所有内容都“按预期”工作 - 但不能保证它始终可以正常工作< /强>