int
a
=
100
;
unsigned int i = 99 ;
cout < < i - a < < endl;
其结果输出是4294967295;
若改为unsigned short i = 99 ;
输出就是 - 1 ;
楼主问为什么?我确实第一反应回答不上来。也只能根据结果做出猜测,
unsigned int i = 99 ;
cout < < i - a < < endl;
其结果输出是4294967295;
若改为unsigned short i = 99 ;
输出就是 - 1 ;
结果一楼的朋友说了这么个原则:“ 二者长度相同,按照被减数的的类型; 二者长度不同,按长的”,自己一想也对!
但是结果又看了下面朋友的回答,其中有个比较权威的人事说了:
unsigned int比int"大"
int 比 unsigned short"大"
所以第一个向老大看齐,就是unsigned int
第二个的老大是int
就感到无比的迷惑了,接着一楼的朋友发现了自己的错误,紧接着跟帖声明了自己的错误(值得学习)
同时在做此题的时候还学到另一个知识:
就是用printf的问题
我对上面的输出代码改为
printf(
"
%d
"
,i
-
a);
输出的结果是-1,我对上面二人的说法迷惑了,但是我很快发现了我用的输出方式错误的问题,这导致了输出的结果又发生了强制类型的转换,
真是“范伟老师的一句经典的话' 防不胜防'!”,所以基础知识一定要打牢固了(⊙o⊙)哦!