gpt4 book ai didi

objective-c - 除法和 NSUInteger

转载 作者:行者123 更新时间:2023-12-03 17:33:16 32 4
gpt4 key购买 nike

我有一些涉及负值的计算:

row = (stagePosition - col) / PHNumRow;

假设stagePosition为-7,col为1。它们都是NSInteger,包括row。PHNumRow 为 8。

如果 PHNumRow 是 NSInteger,我会得到我期望的结果:-1。但如果 PHNumRow 是 NSUInteger,结果就是垃圾。

除数是无符号还是有符号为什么很重要?我不会将结果放入无符号整数中。

最佳答案

由于整数提升。当计算右侧时,所有参数都将提升为表达式操作数的最高类型,如果 PHNumRow 为无符号,则该表达式将是无符号整数。编译器会执行类似于以下内容的操作:

((NSUInteger)stagePosition - (NSUInteger)col) / PHNumRow;

由于 stagePosition 为负数,因此存在环绕,您的计算将会蓬勃发展!

关于objective-c - 除法和 NSUInteger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/646276/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com