近来面试,年纪大了,有些问题忽然变得不太清楚,在此记录一下,希望大家共同学习:
1. char的取值范围是 -128~127, -128的保存为: 0x80
其实也就是-0与0的区别.
例如: char a="128";
数据被强制按照 0x80 存储于内存。
按照 "%d"格式输出则为: -128
按照 “%x”格式输出则为: 0xFFFFFF80!
2. 整形变量的取反问题
int a="5";
~a按照 "%d"输出则为: -6
~a按照 "%x"输出则为: 0xFFFFFFFA
分析如下:
a="0x00000005"; (0101)
~a=0xFFFFFFFA; (1010) // 十六进制存储方式, %x输出
十进制的输出为: 首先确定是负数, 然后按照减1取反的原则处理:
1010 - 1 = 1001;
~1001 = 0110; // 6
所以该值为: -6!
用户807087 2010-3-10 15:18