我是靠谱客的博主 甜蜜冷风,最近开发中收集的这篇文章主要介绍c语言unsigned char转换成unsigned short,有關c語言數據類型轉換之char,unsigned char,unsigned short...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

這是一道朗訊的筆試題(我把一些相關資料匯總了一下,希望大家能進來廣泛的探討,不甚感激!)

#include

int main()

{

char  ca;

unsigned char ucb;

unsigned short usc;

ca = 128;

ucb =128;

usc = ca + ucb;

printf("%dn", usc);

usc = ca + (short)ucb;

printf("%dn", usc);

usc = (unsigned char)ca + ucb;

printf("%dn", usc);

usc = ca + (char)ucb;

printf("%dn", usc);

getchar();

return EXIT_SUCCESS;

}

結果是:0, 0, 256, 65280.

這道題最難得部分,莫過於你是否理解c語言中的數據類型轉換 。

有個名詞“Inerger Promotion"(整型提升):在算術類型中有這么一種轉換,有符號或無符號的char型,short型和Bit-field在做算術運算之前,首先要做整型提升,然后才能參與運算。(其它的一些類型之間的轉換,可以參考任何一本c語言書)

一下是一些關鍵性概念:

無論要做什么運算都要先看這個數存入內存是什么樣子的;

類型提升/截斷的時候都是對內存中數據的操作,提升的時候就是需要 進行擴位:對無符號數擴位的時候直接把擴出的位上補零即可(因為unsigned都是正數);有符號

數進行擴位,則進行符號位擴展(sign extension)如果是正數即原最高位是零則補零,如果是負數即原最高位是1則全補1;進行數據截斷的時候是從低位開始數位數然后截斷,這里注意我們使用的一般都是小端機(little Endian)-----------http://blog.csdn.net/gukesdo/article/details/6909766

以下是一些參考博客和例題:

最后

以上就是甜蜜冷风为你收集整理的c语言unsigned char转换成unsigned short,有關c語言數據類型轉換之char,unsigned char,unsigned short...的全部内容,希望文章能够帮你解决c语言unsigned char转换成unsigned short,有關c語言數據類型轉換之char,unsigned char,unsigned short...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部