1. 程式人生 > >C型別轉換

C型別轉換

int main(void)
{
	signed short A = -10;
	printf("~A = %u\n", ~A);
	char c = 128;
	printf("c=%d\n",c);
	return 0;
}

    通過這個簡單的測試,發現自己對型別轉換的規則的細節需要做一個分析,以明確轉化時的規則。

   1.char轉為為int型別,即有符號signed char轉換為signed int:
      char型別佔1位元組記憶體大小,int型別佔4位元組,所以char轉為int,在int型別變數高位前3個位元組要填充填充位的二進位制為char型別最高位的位元,如
      char a=0x11;// 0001 0001(1位元組)
      int b=a;//前3位元組補0
     轉化後b的十六進位制為0x00000011

     char a=0x81;// 1000 0001
     int b=a;//前三個位元組補1    轉化後b的十六進位制為0xffffff81

2.unsigned char轉為int又是不同的,
unsigned char a=0xf1;//或a=0x11;(最高位是1或0的差別)
int b=a;
printf("%x\n",b);
這裡無論無符號char型別變數的最高位元是0或1,轉為有符號int型別時,int前面高三位位元組都是補0

相關推薦

C# 型別轉換

型別轉換從根本上說是型別鑄造,或者說是把資料從一種型別轉換為另一種型別。在 C# 中,型別鑄造有兩種形式: 隱式型別轉換 - 這些轉換是 C# 預設的以安全方式進行的轉換, 不會導致資料丟失。例如,從小的整數型別轉換為大的整數型別,從派生類轉換為基類。 顯式型別轉換 

C++ 型別轉換-Cast

1、reinpreter_cast 此識別符號的意思即為資料的二進位制形式重新解釋,但是不改變其值。 這個操作符能夠在非相關的型別之間轉換。操作結果只是簡單的從一個指標到別的指標的值的二進位制拷貝。在型別之間指向的內容不做任何型別的檢查和轉換。 用法:reinprete

C++霧中風景11:釐清C++型別轉換(static_cast,dynamic_cast,reinterpret_cast,const_cast)

C++是一門弱型別的語言,提供了許多複雜和靈巧型別轉換的方式。筆者之前寫的Python與Go都是強型別的語言,對這種弱型別的設計實在是接受無力啊~~ ( 生活所迫,工作還得寫C++啊~~)C++語言提供了四種類型轉換的操作:static_cast,dynamic_cast,reinterpret_cast,

C# 型別轉換is和as

看書得來的知識點: //第一種轉換 if(elem is Solid) { Solid solid=elem as Solid; } //第二種轉換 Solid solid=elem as Solid; if(solid!=null) ...... 在第一種方式中,CLR

Python:使用ctypes庫呼叫外部DLL(附帶ctypes c 型別轉換圖)

2010-04-04 23:36 by 無常, 22558 閱讀, 6 評論, 收藏, 編輯 前言 朋友的公司是做GPS的,上週聯絡到我要幫做個程式把他們平臺的車輛定位跟蹤資料和省裡的平臺對接。看一下官方提供的三個文件,洋洋灑灑共一百多頁,一大堆協議的定義甚

C#型別轉換總結

C# 出來也有些日子了,最近由於程式設計的需要,對 C# 的型別轉換做了一些研究,其內容涉及 C# 的裝箱/拆箱/別名、數值型別間相互轉換、字元的 ASCII 碼和 Unicode 碼、數值字串和數值之間的轉換、字串和字元陣列/位元組陣列之間的轉換、各種數值型別和位元組陣列之

C++ 型別轉換(Casting Operators)

   在C++中,經常會涉及到型別轉換,雖說一般情況下不建議型別轉換,但有時候還是避免不了。轉換的時候,可能一般都直接使用C語言風格的轉換(直接強制轉換),但這樣做可能很不安全,容易造成資料丟失(如int-> char),記憶體訪問違規。    下面講一講C++的幾個

c++ c# 型別轉換

//C#呼叫C++的DLL蒐集整理的所有資料型別轉換方式,可能會有重複或者多種方案,自己多測試 //c++:HANDLE(void *) ---- c#:System.IntPtr //c++:Byte(unsigned char) ---- c

C#型別轉換的方法

C# 型別轉換方法 型別轉換從根本上說是把資料從一種型別轉換為另一種型別。在 C# 中,型別轉換有兩種形式: 隱式型別轉換 - 這些轉換是 C# 預設的以安全方式進行的轉換, 不會導致資料丟失。例如,從小的整數型別轉換為大的整數型別,從派生類轉換為基類。 顯式型

C型別轉換

int main(void) { signed short A = -10; printf("~A = %u\n", ~A); char c = 128; printf("c=%d\n",c); return 0; }     通過這個簡單的測試,發現自己對型別轉

C#型別轉換總結(一)

C# 出來也有些日子了,最近由於程式設計的需要,對 C# 的型別轉換做了一些研究,其內容涉及 C# 的裝箱/拆箱/別名、數值型別間相互轉換、字元的 ASCII 碼和 Unicode 碼、數值字串和數值之間的轉換、字串和字元陣列/位元組陣列之間的轉換、各種數值型別和位元組陣列

C++型別轉換操作符(cast operator)

dynamic_cast用以轉換多型型別(polymorphic type).建立執行時檢查將保證轉換的有效性。如果該轉換不是安全的,則丟擲一個bad_cast異常。static_cast用以轉換非多型型別。沒有執行時檢查。const_cast用以除去一個物件的常態(constness)和易失態(volat

c# 型別轉換string To float

1、string To float 簡單的例子: float x = 3.14F; string s = x.ToString(); string s = "3.14"; float x = flo

C++ 型別轉換

搞了段時間的python,感覺python做gui和執行緒程序方面,pyqt還是有待進步,還是得重新拾起C++,於是乎,翻開C++Primer Plus,把之前學得零散的c++重新理一下。大佬發現錯誤,歡迎拍磚。 以上是廢話 C++作為一個強型別,對於變數的型別,非常嚴格

C#==>型別轉換 與 裝箱拆箱

1,型別轉換,C#有兩種轉化方式,隱式轉換和顯式轉換      只要能保證值不會發生任何變化轉換就可以自動進行。      這裡很重要一點就是要保證資料沒有丟失,只要沒有丟失,編譯器就可以執行下去 ①隱式轉換 byte value1 = 10; byte value2 =

c++型別轉換大全

C++語法整理: 1,  char轉string 1)      string.insert(s.begin(), char) 2,  char*轉string 1)      string(char*) 2)      string = char* 3,  int轉str

C++型別轉換函式

用轉換建構函式可以將一個指定型別的資料轉換為類的物件。但是不能反過來將一個類的物件轉換為一個其他型別的資料(例如將一個Complex類物件轉換成double型別資料)。C++提供型別轉換函式(type conversion function)來解決這個問題。型別轉換函式的作

c++型別轉換函式的麻煩及解決方法

c++如同C語言一樣, 有語言本身的隱式型別轉換。如將char轉換成int int轉換為double等 c++還可以將double轉換成int 即向下轉換。 這是語言本身提供的,我們不能控制。但是對於我們自己寫的類卻可以自己控制。有兩種函式提供這種型別的轉換:隱式型別轉換操

C++ 型別轉換 atoi atol atof , itoa ftoa char string

http://blog.163.com/chen_dawn/blog/static/1125063201011203536852/ int atoi ( const char * str ); Convert string to integer Parses the C

c++筆記之資料型別轉換

#include <iostream> #include <string> using namespace std; class Complex { public: Complex() //預設建構函式 { real = 0; imag = 0;