w1shi2wei3 发表于 2013-1-26 12:29:03

C/C++ 赋值语句机理一窥

今天研究了一下c语言中赋值语句的简单机理。

例如
unsigned char ch= -127;

打印出ch的值为:129.

我对该值的理解是这样的:

在编译器编译这句话时,将-127这个立即数转换为对应的补码:(二进制)10000001

【过程:-127--符号位+原码-->11111111----符号位不变,源码取反加1--->10000001】

编译器同时将该补码保存在符号ch对应的字节存储空间中。当打印该变量时,因为是unsigned char类型,于是将10000001解读成一个无符号的数字,即129。

同理,char ch=255;打印ch时值为-1。
页: [1]
查看完整版本: C/C++ 赋值语句机理一窥