sky*_*oor 5 c++ int unsigned-integer
例如下面的代码
int a = -7777;
int b = 10;
cout<< a % b<<endl;
cout<<(a+b)%b<<endl;
cout<< -7777%10 <<endl;
Run Code Online (Sandbox Code Playgroud)
结果是:
-7
-7
-7
Run Code Online (Sandbox Code Playgroud)
但如果我将b的类型更改为unsigned int,则它具有不同的值;
int a = -7777;
unsigned int b = 10;
cout<< a % b<<endl;
cout<<(a+b)%b<<endl;
cout<< -7777%10 <<endl;
Run Code Online (Sandbox Code Playgroud)
结果是
9
9
-7
Run Code Online (Sandbox Code Playgroud)
有人可以建议它是如何在这里工作的吗?差异是如何产生的?
顺便说一句:我在Xcode最新版本中使用C++.
cout << a%b << endl;
由于通常的算术转换,上面的行a被转换为无符号类型(因为你声明b为unsigned).当我在我的机器上将-7777的二进制表示形式解释为正值时,它会产生4294959519,这可能解释了您的情况下9的结果.
在这种情况下:
cout<< -7777%10 <<endl;
Run Code Online (Sandbox Code Playgroud)
没有促销,因为两个文字都是类型int,你看到结果-7.