int i=-20;unsigned int j = 10;unsigned int k=i+j;cout<<(int)k;//输出为-10cout<<k;//输出为4294967286从这可以理解:在i+j运算时,并不会把i的符号位去掉,而是也参与运算,并将结果都赋给了k,因此k的最高位其实是1。只不过打印显示不一样的问题,是选择的方式问题。