视窗
loading...
您现在的位置:首页 > IT认证 > 软件水平 >

软考程序员辅导:c语言中无符号扩展和带符号扩展


2012年软考程序员辅导:c语言中无符号扩展和带符号扩展

程序员C语言中,当不同类型的数据进行运算的时候,就会发生强制或隐式类型转换,通常是低精度的数据类型扩展到高精度的。有些时候,低精度的位数比较少,扩展到高精度的时候,就要在前面补充一些位。那么这些位是补0还是补1呢?这就涉及到无符号扩展和带符号扩展。
  扩展的原则是:1.有符号的数据类型,在向高精度扩展时,总是带符号扩展

  2.无符号的数据类型,在向高精度扩展时,总是无符号扩展

  怎么理解呢?首先来看一道题目,按此题目讲解完你就明白了!

  charca=128;

  unsignedcharucb=128;

  unsignedshortusc=0;

  1)usc=ca+ucb;

  printf("%x",usc);

  2)usc=ca+(unsignedshort)ucb;

  printf("%x",usc);

  3)usc=(unsignedchar)ca+ucb;

  printf("%x",usc);

  4)usc=ca+(char)ucb;

  printf("%x",usc);

  问,在1、2、3、4这4种情况下分别输出什么?

  分析:

  1)对于char类型,有符号,128已经溢出了,其二进制是10000000,第一位会被当成符号位,也是就是说此时它是负数了,它扩展成unsignedshort时,带符号位扩展,符号位为1,所以在前方补1,结果是111111111000000.ucb类型为nsignedchar,无符号,二进制是10000000,扩展成unsignedshor,无符号扩展,所以补0,结果是0000000010000000,。相加结果为10000000000000000由于unsignedshort是二字节,舍弃最前面的1,所以得到0x0,

  2)情况和1一样,只是将ucb显示强制转换为unsignedshort,所以得到0x0,

  3)ca先强制转换为unsignedchar,仍然是10000000,注意此时转换后已经是一个无符号数,所以再往unsignedshort扩展时,为无符号扩展,结果为0000000010000000,ucb扩展后

  也是0000000010000000,相加结果为0000000100000000,所以结果为0x100

  4)ca转为unsignedshort,带符号扩展,为111111111000000,ucb先强制转换为char,然后再转为unsignedshort,此时也要带符号扩展,所以也是111111111000000,两数相加,得到11111111100000000,所以结果为0xff00

闂侀潧妫岄崑锟�

闂侀潧妫岄崑锟�

闂侀潧妫欓崝鏇㈠储閵堝洦瀚婚柨婵嗘嫅缁憋綁鏌¢崟顐︻€楅柟铚傚嵆閹囧醇閻斿摜绉柣鐘叉搐閻°劌危閹达箑违闁跨噦鎷�
闂佸搫鐗滈崜娑㈡偟椤栫偞鐒鹃柕濞垮劚閻庤菐閸ワ絽澧插ù鐓庢嚇瀵爼濡烽敂鍓у煃婵炲瓨绮岀花鑲╄姳娴煎瓨鍤傞柡鍐ㄥ€荤粔褰掓煥濞戣櫕瀚�闁诲海鏁搁、濠偯归崱妯诲闁伙絽鏈悾鍗炃庨崶锝呭⒉濞寸厧鎳橀獮瀣箣濠婂嫮鎷ㄩ梺鍛婃⒐缁嬫帡鎯囨导鏉戝唨闁搞儯鍔嶉~鏍庨崶锝呭⒉濞寸厧鎳橀幆鍐礋椤愩垺鐦旀繝銏f硾鐎氬摜妲愰敓锟�闂佺懓鐡ㄩ崹鍐测堪閹寸姳鐒婂┑鐘叉搐濞呫垹霉閿濆棛鐭庨柍褜鍓欓幊鎰枔閹达附鍋嬮柛顐ゅ枑缂嶁偓闂佹垝鐒﹂妵鐐电礊閺冨牆绾ч柛鎰硶缁€锟�闁诲簼绲婚~澶愬垂濠婂嫮顩锋い鎺戝暞缁侇噣寮堕悙鍨珪婵炲牊鍨剁粚閬嶅焺閸愌呯婵犵鈧啿鈧懓锕㈡担鍓插殨闁稿本绻嶉崬鎾煙鐎涙ḿ澧繝鈧担鍦懝闁割煈鍋呯紞鈧梺鐟扮摠閻楃偟鎹㈠顑芥灃闁哄洦鐭换鍡涙煙椤撗冪仴妞ゆ洦鍓熷畷锝嗙節閸愨晩妲梺鑹伴哺濮婂鏌堥幘顔肩闁瑰瓨绮嶇划锕傛煥濞戞ɑ婀版繝鈧幍顔惧崥婵炲棗娴风粣妤冪磼閺傛鍎忕€规挸妫濆畷姘舵偐缂佹ḿ褰戦梺鎸庡喕閹凤拷闁诲海鏁搁幊鎾舵暜椤愶箑绀嗘繛鎴灻弫鍫曟倵绾拋娼愰柛銊︾矋缁傛帡顢楁担绋啃梺瑙勬緲缁绘垿寮鐣岊浄婵せ鍋撻柍褜鍓欓崐鍝ョ礊鐎n喗鍎嶉柛鏇ㄥ帎瑜版帗鐓€妞ゆ帒锕︾粈锟�闂佽壈椴稿濠氭焾閹绢喖妫橀柣鐔稿绾偓闂佹寧绋掑畝鎼佸磻閺嶃劎顩烽柨鐕傛嫹:webmaster@jscj.com闂侀潧妫岄崑鎾绘煟椤厾绁烽柣锔跨矙閺佸秹鏁撻敓锟�4008816886

相关文章

无相关信息
更新时间2022-03-13 11:10:58【至顶部↑】
联系我们 | 邮件: webmaster@jscj.com | 客服热线电话:4008816886(QQ同号) |  婵犵數鍎戠紞鈧い鏇嗗嫭鍙忛柣鎰暯閸嬫捇鐛崹顔句痪濠电姭鍋撻柛銉戝苯娈銈嗘椤斿﹦鎹㈤敓锟�

付款方式留言簿投诉中心网站纠错二维码手机版

客服电话: