不同类型的除数和被除数取余 C++
在写程序时遇到这样一个问题
int main()
{unsigned int u = 10;int b = -34;cout << b%u << endl;//结果为2b = 34;cout << b%u << endl;//结果为4system("pause");
}
按正常逻辑,第一个是-4,第二个是4,但是显然结果有问题,导致这种问题的原因是取余的两个操作数类型不一样,这种情况下,会把有符号数int型转换为无符号数unsigned int型进行运算。
解决办法统一两个操作数类型
int main()
{int u = 10;int b = -34;cout << b%u << endl;b = 34;cout << b%u << endl;system("pause");
}
int main()
{unsigned int u = 10;int b = -34;cout << b%(int)u << endl;b = 34;cout << b%u << endl;system("pause");
}
这两种办法都可以
注:取余运算时,如果两个操作数类型一致,结果和被除数的符号一致
如下所示
21 % 6; /* result is 3 */ 求余看被除数的符号,不看除数
21 % 7; /* result is 0 */
-21 % -8; /* result is -5 */
21 % -5; /* result is 1 */
21 / 6; /* result is 3 */ 求整两边都看
21 / 7; /* result is 3 */
-21 / -8; /* result is 2 */
21 / -5; /* result is -4 */
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
