1樓:席讓潘午
首先確定位元組,然後確定位,有符號的老派就是-2的位次方到2的位次方–1,有符號的森陸char是8位元組,它的取值範圍就是-2的7次方到2的7次此含頃方再減一。
2樓:谷萱盤香
char是乙個位元組也就是8位二進位數字,所以乙個char的取值範圍是0-255
基本上都備歲是孫搜這樣計仿凱睜算,就是查詢各個型別的位數。
3樓:藺桂枝遇醜
根據char的取值範圍和unsigned
char的取值範圍的位數,如char和unsignedchar都是8位衫仿謹,char型最高位是符號或基位,1代表為負數,所以大戚為-2^7-1~~+2^7-1
即-128~+127
而unsigned
char為2^8-1=256
即0~255
4樓:盈柔公孫俊弼
c語言中char型別佔一慎肢螞個位元組,屬於有符號數,按補碼進行資料存寬埋放。
如果用程式,來獲取取值範圍,可以設定兩個變數來儲存最飢絕大值和最小值,另設乙個unsigned
char型變數,從乙個位元組的0(00000000)開始累加,直到變成255(11111111),統計其中的最大和最小值。
int main()
unsigned char i;
char min, max;
max=min=0;
for( i=0;i<255;i++
if ( min>(char)i ) 按有符號數進行比較。
min=i;
if ( max<(char)i ) 按有符號數進行比較。
max=i;
return 0;
執行結果:min=-128
max=127
5樓:網友
c語言中char型別佔乙個位元組,屬於有符號數,按補碼進行資料存放。
如果用程式,來獲取取值範圍,可以設定兩個變數來儲存最大值和最小值,另設乙個unsigned char型變數,從乙個位元組的0(00000000)開始累加,直到變成255(11111111),統計其中的最大和最小值。
#include
int main()
return 0;
執行結果:min=-128 max=127
6樓:小神秘闖闖
首先確定位元組,然後確定位,有符號的就是-2的位次方到2的位次方–1,有符號的char是8位元組,它的取值範圍就是-2的7次方到2的7次方再減一。
7樓:絕地
根據char的取值範圍和unsigned char的取值範圍的位數,如char和unsigned char都是8位,char型最高位是符號位,1代表為負數,所以為-2^7-1~~+2^7-1 即-128~+127 ,而unsigned char為2^8-1=256
即0~255
8樓:網友
char是乙個位元組也就是8位二進位數字,所以乙個char的取值範圍是0-255
基本上都是這樣計算,就是查詢各個型別的位數。
c語言中char的數值範圍
9樓:黑屋的寂寞
按八位來算:
在計算機裡面是用補碼錶示的,128的二進位碼是:10000000,這個東西在計算裡面並不是128,因為最高位是符號,它是個負數,那麼負數的原碼是多少呢,我們知道如果補碼的符號位為「1」,表示是乙個負數,求原碼的操作可以是:符號位為1,其餘各位取反,然後再整個數加1。
所以,10000000取反後就是11111111,把符號位去了就是01111111再加1就是10000000就是-128了。
其實你看-127是10000001,這個很好理解,-128加1不就是-127
在c/c++中,char是c/c++整型資料中比較古怪的乙個,而且關於char還有乙個特殊的語言就是char *,它在c/c++中有專門的語義,既不同於signed char *,也不同於unsigned char *,專門用於指以'\0'為結束的字串。
c語言是弱型別還沒什麼,如果在c++中,你可以試一試。
char *p="abcd";
是可以通過編譯的但如果用。
signed char *p="abcd";
還是unsigned char *p="abcd";
都是不能通過編譯的。
關於這些在c/c++的語言標準或一些經典書籍如thec++programing language中都有很清楚的說明。
判斷編譯器的預設char符號。
#include
int main(void)
elsereturn 0;
char 還在pascal語言中應用。在pascal語言中,字元常量是由單個字元組成,所有字元采用ascii編碼也稱ascii碼。
char 其數值表示 範圍的計算
10樓:網友
這是因為採用的是補碼儲存的,+0,-0的補碼相同,所以可以多表示乙個數。最高位是符號位表示正負 1為負,0為正,後面是補碼。
11樓:匿名使用者
char為字元型資料(資料長度為8位二進位數),也可參與整數運算,計算機的有符號數(整型數)是以補碼形式表示的。
對於8位二進位數表示的補碼,最高位符號位,其餘數值位,如(+8)的補碼=0000 1000
8)的補碼=1111 1000 //方法是:+8的原碼求反加1所以,最大正數表示為:0111 1111,即2^7-1最小負數表示為:1000 0000,即-2^7
12樓:匿名使用者
1000_0000是個特殊值,應該是表示-2^7吧。
怎麼計算c++中各個資料型別的取值範圍
13樓:依蘭彬歌
在c++中,我們都知道各個資料型別的值都有各自所能表達的範圍,舉個例子來說吧,我們以整型變數int為例說明怎樣去計算資料型別的取值範圍:
我們假設int在vc++開發環境中佔用兩個位元組的單元,這只是為了簡化過程的,事實上我們都知道它佔四個位元組的。
從二進位的原碼說起:
如果以最高位為符號位,二進位原碼最大為0111111111111111=2的15次方減1=32767
最小為1111111111111111=-2的15次方減1=-32767
此時0有兩種表示方法,即正0和負0:0000000000000000=1000000000000000=0
所以,二進位原碼錶示時,範圍是-32767~-0和0~32767,因為有兩個零的存在,所以不同的數值個數一共只有2的16次方減1個,比16位二進位能夠提供的2的16次方個編碼少1個。
但是計算機中採用二進位補碼儲存資料,即正數編碼不變,從0000000000000000到0111111111111111依舊錶示0到32767,而負數需要把除符號位以後的部分取反加1,即-32767的補碼為1000000000000001。
到此,再來看原碼的正0和負0:0000000000000000和1000000000000000,補碼錶示中,前者的補碼還是0000000000000000,後者經過非符號位取反加1後,同樣變成了0000000000000000,也就是正0和負0在補碼系統中的編碼是一樣的。但是,我們知道,16位二進位數可以表示2的16次方個編碼,而在補碼中零的編碼只有乙個,也就是補碼中會比原碼多乙個編碼出來,這個編碼就是1000000000000000,因為任何乙個原碼都不可能在轉成補碼時變成1000000000000000。
所以,人為規定1000000000000000這個補碼編碼為-32768。
所以,在計算機系統中,int範圍是-32768~32767。
c語言中return的用法,一個c語言中return的用法
跟return 沒有任何關係,肯定是scanf 的問題不然你用下面這個語句 c a b a b 代替 c max a,b 你再仔細檢查一下scanf 函式 不妨寫成這樣 scanf d,d a,b 輸入 3,4 注意輸入格式一定要與scanf 的格式一樣 你把scanf d n,d n a b 改為...
c語言中數的小數如何表示c語言中一個數的小數如何表示
4.2用c語言表示 double d 4.2。c語言中用於描述小數的資料型別是float和double,float型別表示單精度浮點數,double表示雙精度浮點數。1 float float 資料型別用於儲存單精度浮點數或雙精度浮點數。浮點型別的單精度值具有 4 個位元組,包括一個符號位 一個 8...
c語言中資料型別是按什麼劃分的,C語言中資料型別是按什麼劃分的
資料型別在資料結構中的定義是一個值的集合以及定義在這個 值集上的一內組操作。變數是用來儲存容值的所在處 它們有名字和資料型別。變數的資料型別決定了如何將代表這些值的位儲存到計算機的記憶體中。在宣告變數時也可指定它的資料型別。所有變數都具有資料型別,以決定能夠儲存哪種資料。根據預設規定,如果在宣告中沒...