#include<iostream> using namespace std; void main() { /* int b = 3; int arr[] = {6,7,8,9,10}; int *ptr = arr; *(ptr ++) += 123; // printf( "%d,%d/n",*ptr,*(++ptr)); cout << *ptr << *(++ptr); */ unsigned char a = 0xA5; // unsigned char b =~a >> 4; unsigned char b = a * 2; cout << b << endl; printf("b=%d/n",b); }
答案:47
解析:b=a*2;计算时需要先把a转换为整型,然后再与2相乘,计算出结果的后8位再赋给b。
编辑器只所以这样做,主要是适应各种类型的数据,而计算结果的正确与否,是否越界,是程序员的事情。
unsigned char是无符号字节型,char类型变量的大小通常为1个字节(1字节=8个位),且属于整型。unsigned char 0-255,char
-128-127.整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。