【发布时间】:2020-10-29 12:20:12
【问题描述】:
我有一个受安全编码启发的简单问题。
我遇到了必须将除法余数或0 的负值分配给int 变量的情况,因此我使用了以下符号:
int a = -(b % c);
b 和 c 都是正整数。表达式(b % c) 将产生一个正数,或者0 和a 将被赋予结果的负值。
如果(b % c) 产生0,-0 的计算结果是什么? 0 还是否定的0?如果后者发生,会有什么影响?
P.S 我不知道0 是什么负数。
【问题讨论】:
-
你很可能必须做
-1*(b%c)。据我所知,没有问题,因为它的二进制补码表示对于整数是相同的。 -
二进制补码不能存储
-0,它只是0,但是浮点变量可以存储-0.0。 -
根据Wikipedia:“广泛使用的二进制补码编码不允许负零。”
标签: c language-lawyer division