C++ 既有无符号数又有int值时,先把int值转为无符号数(和int值直接赋给无符号值一样),最后再相加

#include <iostream>

int main()
{
    unsigned u = 10;
    int i = -42;

    std::cout << i + i << std::endl;  //输出结果为-84
    std::cout << i + u << std::endl;   // i 转换为无符号整形为 2^32 + [(-42)*(-1)/2^32]*2^32 + (-42) = 4294967254, 所以最后结果为 4294967254 + 10 = 4294967264

    std::cin >> i ;

    return 0;
}

 

posted on 2019-11-13 10:26  wu.g.q  阅读(279)  评论(0编辑  收藏  举报

导航