无符号 运算中的细节问题

来源:互联网 发布:python 桌面开发 编辑:程序博客网 时间:2024/06/05 05:26

#include<iostream>

using namespace std;

int main()

{

unsigned a=0;

int b=1;

cout<<b-1<<endl;

cout<<a-b<<endl;

}

a-b的结果并不是-1,这是因为 unsigned 和 int 进行运算时,int会被强制转换为unsigned类型,即unsigned int

转换为0+(-1);

-1为补码 即 1111 1111 1111 1111转换为unsigned 这将是一个很大的值,即2的32次方

原创粉丝点击