『壹』 關於C語言在不同編譯軟體中運行後得到的不同結果的問題。
tourbo中int 佔2個位元組 c++中佔4個位元組 -1是以2進制補碼的形式表示滴。
tourbo中-1的16進制形式表示:0xFFFFFFFF
c++中-1的16進制形式表示為:0xFFFFFFFFFFFFFFFF
所以翻譯成8進制時也各不相同啊。
可以使用頭文件inttypes.h 這是c99提供的一個可選名字集合(來完成可移植性)
使用該頭文件你可以定義uint32_t a; 那麼a變數表示一個32位無符號的整數類型。
這就保證了程序的可移植性,關鍵是現在很多編譯器還沒有實現c99的這一功能屬性。
『貳』 在C語言中,int類型,long類型,float類型,double類型和char類型在16位和32位計算機中各占幾個位元組
int 在內存中佔4個位元組,long在內存中佔4個位元組,float:佔4個位元組,double: 佔8個位元組,char:佔1個位元組,操作方法如下:
1、C#支持8中預定的整數類型。分別是sbyte、short、int、long、byte、ushort、uint、ulong。byte0-255標準的8位整數類型。默認是無符號的,有符號的為sbyte。
『叄』 c語言整型數據int占幾個位元組
不同的編譯器,占據的位元組也不同,具體如下表所示:
編譯器可以根據自身硬體來選擇合適的大小,但是需要滿足約束:short和int型至少為16位,long型至少為32位,並且short型長度不能超過int型,而int型不能超過long型。這即是說各個類型的變數長度是由編譯器來決定的,而當前主流的編譯器中一般是32位機器和64位機器中int型都是4個位元組。
(3)c語言16位與32位編譯器擴展閱讀:
在使用不同編譯器時候需要注意他們的數據類型差異,int如此其他數據類型也應當注意,因為並沒用人規定某種數據類型應該占據多少位元組,以及他所表示的數據是有符號還是無符號,即便有人規定這些內容那麼編譯器是否願意按規定來實現誰也說不準。
『肆』 32位系統和16位系統中C語言的int的佔多少位
正常情況下,16位int就是16位的,2位元組32位環境下int是32位的,4位元組,不過還與編譯器有關,比如,我們用WinXp32位版下,運行Tc2.0,那麼int是16位,但你如果用VC編譯,那麼int是32位,注意,int是多少位,與編譯器有關系,不同的編譯器可能就不同
『伍』 c語言,為什麼int類型在16位系統中佔2個位元組,在32位系統中佔4個位元組
常用的位元組是8位的位元組,即包含8位的二進制數,因此4個位元組就是32位。如下參考:
位元組是二進制數據的單位。一個位元組通常是8位長。然而,一些較老的計算機結構模型使用不同的長度。為了避免混淆,在大多數國際文獻中都使用字位元組而不是字位元組。
在大多數計算機系統中,位元組是8位長數據的單位,大多數計算機使用位元組來表示字元、數字或其他字元。
數據存儲是以「位元組」為單位,數據傳輸大多以「位」(bit,也稱「位」)為單位,位表示0或1(即二進制),每8位(bit,縮寫為b)構成一個位元組(縮寫為b),是最小級別的信息單位。
(5)c語言16位與32位編譯器擴展閱讀:
有關計算機的單位的作用:
在計算機中,作為一個整體處理或操作的一串數字被稱為計算機字,或簡稱,一個字通常被分成幾個位元組(每個位元組通常是8位)在內存中,每個單元通常存儲一個單詞,因此每個單詞都是可定址的。一個字的長度是以位來表示的。
在計算機的運算單元中,控制器通常以字單元進行傳輸。單詞出現在不同的地址,具有不同的含義。例如,發送給控制器的字是一條指令,而發送給算術單元的字是一個數字。
2.單詞長度:
計算機的每個字中包含的位數稱為字長。計算的字長是一次可以處理的二進制數字的數目。當然,計算機處理數據的速度與它一次能處理的比特數和處理數據的速度有關。
例如如果一台計算機的字長是另一台計算機的兩倍,那麼即使兩台計算機的速度相同,前者也可以在同一時間完成兩倍的工作。
『陸』 在C語言中,int類型、long類型、float類型、double類型和char類型數據,在16位和32位計算機中各占幾個位元組
基本整形:int 2個位元組
短整型:short int 2個位元組
長整形:long int 4個位元組
無符號整形:unsigned int 2個位元組
無符號短整型: unsigned short int 2個位元組
無符號長整形:unsigned long int 4個位元組
單精度 float 4個位元組 有效數字7位
雙精度 double 8個位元組 有效數字16位
字元型 char 1個位元組
以上是在16位計算機系統中,32位的加倍。
如果實在不相信,可以用sizeof函數驗證一下,方法如下
#include「stdio.h」
main()
{
int m;
m=sizeof(數據類型);
printf(「%d",m);
}
『柒』 c語言數據長度16位和32位什麼意思
樓上不要胡說!
>>是說16位的機器就是2個,32位是4個嗎?
這句話說的不太對,
這個其實指的是編譯器的位數,
對於16位編譯器(例如,tc),int型佔2個位元組
對於32位編譯器(例如,vc,gcc),int型佔4個位元組
這里指的是編譯器的位數,不是cpu的位數
『捌』 假定編譯器規定int和short類型長度分別為32位和16位,執行下列C語言語句:
B.0000FFF8H
為正確答案
『玖』 C語言同一段代碼,同樣的文件,編譯器為什麼運行結果不一樣
有如下幾種可能:
1 代碼運行的平台硬體不同。
不同的CPU,如嵌入式CPU,intel CPU,以及IBM的CPU,在硬體最底層就是不同的,而C語言是一門和底層相關性極大的語言,在不同的硬體上運行出不同結果是很正常的。
2 代碼運行的系統不同。
相同CPU在不同操作系統上跑相同代碼時,一樣會出現不同的結果。這是由於系統底層的實現不同造成的。比如linux和Windows,在底層處理上就有一定的差異。
3 編譯器不同,同時代碼中使用了C規范未定義規則的語句。
C語言規范並沒有對C語言的所有行為做定義,所以相同語句,不同編譯器的運行效果可能有所不同。比如同樣的sizeof(int),在16位編譯器上結果為2,而32位編譯器上就會是4。
4 代碼獲取到的外部數據不同。
比如運行代碼時獲取到的其它輸入不同,包括程序中獲取的環境變數,實時信息,以及各種外部輸入等,均有可能出現不同。
比如在做隨機數時,如果以當前時間設定隨機數種子,由於每次的時間是不同的,同一個程序每次運行的結果都是不同的。
『拾』 每個編譯器都不一樣么 c語言一般用什麼編譯器 每次一種編譯器不能編譯 另一種卻能編譯出
編譯器就是c語言編譯成二進制的東西,
不同的編譯器是不同的,
比如16位系統和32位系統的編譯器就不同,因為16位的認為int是2位元組,32位的則認為是4個位元組。
另外
linux上的編譯器跟windows下的編譯器也不同,linux上的認為內核空間佔1G,而windows下則認為佔2G,
此外兩個系統對環境變數以及其他的設置也不同所以編譯器更不能用。
而且不同的CPU的指令集時不同的,所以同樣int
a
=1
最後被編譯成的二進制代碼也是不同的。
C語言的編譯器有很多,windows下的編譯器也有很多,不同的編譯器可能會做一些不同的優化,linux下的gcc也可以添加選項讓他編譯windows下運行的程序。
main(int
argc,char*argv[
】
)
argc
是你的參數個數
argv是你的參數。
比如你最終程序叫
add
那麼
你在命令行執行add
1
2
那麼argc
=3
第一個參數使你的add,
第二個第三個就是
1
2,
在函數內部你就可以獲取這倆參數進行相加然後列印
visual
是個IDE,集成開發環境,已經集成好了windows下使用的編譯器連接器
等,
編寫代碼完成後直接點擊編譯就行了。
IDE的默認編譯器是可以更改的,不同的IDE設置不同。