gpt4 book ai didi

c++ - 对 int 类型和无符号整数的值应用模运算

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:32 24 4
gpt4 key购买 nike

例如下面的代码

int a = -7777;
int b = 10;
cout<< a % b<<endl;
cout<<(a+b)%b<<endl;
cout<< -7777%10 <<endl;

结果是:

-7
-7
-7

但是如果我把b的类型改成unsigned int,它有不同的值;

int a = -7777;
unsigned int b = 10;
cout<< a % b<<endl;
cout<<(a+b)%b<<endl;
cout<< -7777%10 <<endl;

结果是

9
9
-7

任何人都可以建议它在这里是如何工作的吗?差异是怎么来的?

顺便说一句:我在最新版本的 Xcode 中使用 C++。

最佳答案

cout<< a % b << endl;

在上面的行中,aconverted由于通常的算术转换,转换为无符号类型(因为您将 b 声明为 unsigned)。当我在我的机器上将 -7777 的二进制表示解释为正值时,它产生 4294959519,这可能解释了你的情况下 9 的结果。

在这种情况下:

cout<< -7777%10 <<endl;

没有提升,因为两个字面量都是 int 类型,您会看到结果 -7。

关于c++ - 对 int 类型和无符号整数的值应用模运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36115709/

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