若已声明unsigned a=30;,则表达式a=-a的值为?

来源:百度知道 编辑:UC知道 时间:2024/05/26 23:23:40
各位 回答详细些吧!我在初学啊,很多不懂!谢谢啊

首先你要学习原码、反码、补码的基本概念!
计算机里数据是以补码的形式存储的。又是以二进制形式存储的。所以我写出a在计算机中的存储值(以TC下16位为例):
unsigned a=30,则a的存储值为:0000 0000 0001 1110
a=-a后,a=-30,则a的存储值为:1111 1111 1110 0010
所以,对于a=30来说,以无符号形式及有符号形式输出都是30
对于a=-30来说,若以有符号形式输出结果为-30,若以无符号形式输出,结果是65536-30=65506!!!
若你在VC下运行(32位),a=-30的存储值前面又多了16个1,所以它的值是2的32次方-30