了解过元通古镇设unsignedinta=-1;longb;执行b=a;printf("%ld",b);的结果是第1个回答:百度网友670a9bc2016-08-09TA获

第1个回答:

百度网友670a9bc2016-08-09TA获得超过220个赞关注在VC里爆int,unsignedint,long,unsignedlong都是占32位,4个字节。区别在于有符号数首位表达正负,无符号数表示数值。因为-1在无符号数里相当于4294967295,所以a=4294967295。但值传给b时,首位会被当成符号位,所以结果b=-1再说,printf()里边的格式控制符你用的是%d,是按有符号int整来输出的,所以不管b有没有符号,输出结果都是-1所以要么是你写错了,要么就是答案错了