C語言unsigned,C語言中用unsigned的作用,C語言中unsigned和int的計算

 2023-11-16 阅读 76 评论 0

摘要:有符號數和無符號數在一起運算,不要以為遵循的仍然是短的向長的靠齊。以前我們知道,如果一個short和一個int在一起運算,C語言unsigned,首先編譯器會將short自動轉換為一個int類型中間變量,然后進行運算。但是有符號數和無符號數在一起運算的話&#

有符號數和無符號數在一起運算,不要以為遵循的仍然是短的向長的靠齊。以前我們知道,如果一個short和一個int在一起運算,

C語言unsigned,首先編譯器會將short自動轉換為一個int類型中間變量,然后進行運算。但是有符號數和無符號數在一起運算的話,并不是這樣。

借此機會,串下整形數據轉換的相關知識。

c語言unsigned是什么意思及用法、首先說說符號數和無符號數之間的轉換。無符號數可以轉換為有符號數,有符號數也可以轉化為無符號整形,這之間的轉換一般編譯器也不會給出警告,因為這種轉換不涉及到bit丟失的情況,內存內容不會發生任何改變。僅僅是對這塊內存的解釋不一樣而已。

例如: int a = -3;

unsigned int數據范圍、unsigned int b= a; // b=

65533

反之一樣。

編譯器里面有標準的轉換,這個是在整形運算的時候出現。標準轉換的規則是:短的的向長的轉;有符號的向無符號的轉。如果被轉換的數據比轉換后的數據要長的話,轉換可能會丟失bit數據。通常,編譯器會給出警告。

無符號數據和有符號整數進行運算,是有符號整數向無符號整數靠齊。這里,我們可以總結一條規則:整形數運算,總是遵循一個原則:小的往大的擴展。

從小到達:short -> unsigned short -> int

-> unsigned int

之所以這里有符號數類型長度比無符號數類型長度小,區別在于最高位使用與否。下面看看幾個例子:

eg1:

int a=-6;

unsigned int b = 3;

typeid(a+b)-----------------------unsigned

int?a+b結果:為一個很大的整數

潛在:int --> unsigned int

eg2:

unsigned short s1 = 3;

int i2= -5;

typeid(s1+i2)

----------------------int?a+b結果:-2

潛在:unsigned short--> int

eg3:

unsigned int s1 = 3;

long i2= -5;

typeid(s1+i2) ---------------------unsigned

int?a+b結果:很大的正整數

潛在: long--> unsigned int

其它的如此類推

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/175464.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息