char a = 100;
char b = 150;
unsigned char c;
c = (a < b) ? a : b;
请问C的值是多少?
A:100 B:150 C:-106 D:204
错误理解:100<150,所以c等于a等于100;
实际上,char类型的值占一个字节,0~255或-128~127 所以b超过了char的取值范围(根据题意知b是有符号的)
关键点是b的取值范围,错误理由:大意了
有符号二进制运算:0正1负
正数直接按位加就可以,第一位是符号位;
负数:以10001001为例:
方法1:10001001是负数
取反;01110110
加一:01110111=119即119是它的绝对值,所以他是-119
方法二:首位(符号位)不参加运算,其余位取反加一,得119,