⑴ 值域是什麼意思是不是只能在這個范圍內賦值比如說int a=32768對嗎
c語言是強類型語言,每種數據類型的取值范圍要嚴格控制,超過范圍程序就會報錯,你這樣取值肯定報錯,取32768要用長整形long int a=32768才對
⑵ c語言的int型數據范圍和內存中存儲詳細解釋!
位元組數:int型的位數一開始和操作系統的位數一樣,而1位元組=8位,所以位元組數一般是(操作系統位數/8),但64位系統中由於人們已經習慣int佔32位,所以int型位元組數如下:16位下2位元組,32位和64位下4位元組
無符號和有符號:有時候人們需要存儲的整數可正可負,這時候就要用有符號的整型存儲,也是默認的int類型;有時候只要存儲自然數,那麼就可以用無符號整型存儲,也就是unsigned int,也可以寫成unsigned
取值范圍:對於n個位元組的無符號整型其取值范圍為0~2^(n*8)-1,對於n個位元組的有符號整型其取值范圍為-2^(n*8-1)~2^(n*8-1)-1
至於內存中存儲的形式不清楚你的意思,請說具體一點
⑶ C語言中整型數據的值域是怎麼求出來的
如果整形佔用2個位元組(即16位),那麼最小的數就是負的2的15次方,最大數就使2的15次方再減1。
同理,
如果整形佔用4個位元組(32位),那麼最小的數就是負的2的31次方,最大數就使2的31次方再減1。
為什麼是15次方?因為存儲符號(即正數還是負數)要佔用1位。
⑷ 為什麼C語言里有的數據類型的值域會不同
不同數據類型 占的位元組數不同 導致值域不同,比如 char 佔一位元組,long佔4位元組,自然不可能一樣
還有一種 是數據類型表示數據的方式不同, 比如int是用來表示整型的,而float是用來表示浮點型的,雖然都是4位元組,但表示範圍肯定不一樣的。
⑸ 為什麼C語言里有的數據類型的值域會不同
不同數據類型
占的位元組數不同
導致值域不同,比如
char
佔一位元組,long佔4位元組,自然不可能一樣
還有一種
是數據類型表示數據的方式不同,
比如int是用來表示整型的,而float是用來表示浮點型的,雖然都是4位元組,但表示範圍肯定不一樣的。
⑹ C語言函數三要素是什麼
C語言函數三要素是:定義域、值域和對應法則。
一,C語言函數定義域
(1)無參函數定義的一般形式如下:
類型標識符 函數名(){
聲明部分
語句
}
其中類型標識符和函數名稱為函數頭。類型標識符指明了本函數的類型,函數的類型實際上是函數返回值的類型。該類型標識符與前面介紹的各種說明符相同。函數名是由用戶定義的標識符,函數名後有一個空括弧,其中無參數,但括弧不可少。
{}中的內容稱為函數體。在函數體中聲明部分,是對函數體內部所用到的變數的類型說明。
在很多情況下都不要求無參函數有返回值,此時函數類型符可以寫為void。
運行結果:
1!+2!+...+9!+10! = 1215752192
⑺ C語言中,"整型"跟"短整型"的取值范圍都是 -32768~32...
C語言沒有具體規定各類數據所佔內存的位元組數,只要求long型數據長於int型,short型短於int 型,是由計算機系統自行決定,有的short和 int都是16位,long 是32位,有的short為16位,long和int都是32位,通常是long 為32位,short為16位,而int可以是16位,也可以是32位,這兩個都是用於存儲整數.短整型的二進制位長是16,長整型的是32位.就是說長整型可以表示位數更多的整數.短整型所能表示的整數的值域為-32768~32767,長整型則為-2147483648~2147483647.例如,如果有個數為32780,那麼它只能用長整型表示,而不能用短整型表示。
⑻ C語言中有符號字元型數據值域的范圍是-128到+127,請問那個-128是怎麼得來的呀
這個你理解錯了,-127並不是全1,而全1卻是-1。看下面的規律,從上到下都是+1 關系:
0000 0001 1
0000 0010 2
。。。。
0111 1110 126
0111 1111 127 (有符號數最大值)
1000 0000 -128 (比127還大1的值)
1000 0001 -127 (比127還大2的值)
。。。。
1111 1110 -2 (比127還大127的值)
1111 1111 -1 (比127還大128的值)
0000 0000 0 (比127大129)
0000 0001 1 (怎麼樣,這個數字是完全循環的)
怎麼樣,看我說0比127大129是胡說八道是吧,看我來計算一下:127+129 = 256,char能表示的總個數是256,256 % 256 == 0。其實補碼的方式恰好是最適合計算機里保存和計算的方式,理由如下:
數學上,-127(1000 0001)是大於 -128(1000 0000)的,而這兩個二進制的值不管用在有符號還是無符號、4位還是8位還是16位(前補零),看上去都是-127>-128。
加法運算的時候,完全不需要考慮符號,例如,-1 + 2 = (1111 1111) + (0000 0010),從右數第二位開始進位,結果是 (1 0000 0001) 而char的位數是8位,於是最左位直接捨去不管了,結果就是 0000 0001 ,-1 + 2 = 1,結果正確。至於 127 + 1 = -128這種事情,就是計算機整形運算的溢出了,很容易理解,而且有時候也很好用。
以上用法叫做補碼,而你所說的-127用全1表示的方式也有,叫做反碼,負數和其絕對值只有第一位符號位的區別。
0111 1110 126
0111 1111 127
1111 1111 -127
1111 1110 -126
這樣看來,雖然對人來說閱讀和理解都簡單,但是有下面的幾個問題:
-126減去-127應該等於1,而這兩個數字的碼值看上去是 1111 1111 > 1111 1110 的,升位操作(前補零)也是一樣的結果;
0000 0000 和 1000 0000 分別表示 +0 和 -0,而這兩個值應該是一樣的。
負數和正數進行加法運算的時候,需要把負數去符號變成絕對值,然後再變成減法再進行計算,復雜度要大多了。
---------------------------
我不是為了挖墳才來挖墳的,因為我今天看mysql的tiny int的分析的時候,有個人發文說-127 就是全1,而且還不讓評論,這太坑爹了啊,而且搜了一下,對補碼一知半解的人不在少數,所以借樓主的位置來此說下
⑼ C語言中怎麼給隨機取值函數設定值域
if(rand()%2 == 0)
k=-1;
else
k =1;
看隨機數是不是偶數 是則負
⑽ C語言各個數據類型取值范圍
C語言的數據基本類型分為字元型、整型、長整型以及浮點型,取值范圍如下:
c語言中關於變數的取值范圍的計算方法:
1、使用函數的返回值。將函數計算出的變數作為返回值返回給其它函數使用。
2、使用函數的參數。將函數參數設置為引用傳遞而不是值傳遞,就可以把函數計算出的變數通過此參數給其它函數使用。
3、使用全局變數。將函數計算出的值保存到全局變數中,其它函數就可以使用了。
(10)c語言值域詳解擴展閱讀
C語言運算中的數據類型自動轉換原則
1、隱式轉換
C語言在以下四種情況下會進行隱式轉換:
(1)算術運算式中,低類型能夠轉換為高類型。
(2)賦值表達式中,右邊表達式的值自動隱式轉換為左邊變數的類型,並賦值給它。
(3)函數調用中參數傳遞時,系統隱式地將實參轉換為形參的類型後,賦給形參。
(4)函數有返回值時,系統將隱式地將返回表達式類型轉換為返回值類型,賦值給調用函數。
2、算數運算的隱式轉換
算數運算中,首先有如下類型轉換規則:
(1)字元必須先轉換為整數(C語言規定字元類型數據和整型數據之間可以通用)。
(2)short型轉換為int型(同屬於整型)。
(3)float型數據在運算時一律轉換為雙精度(double)型,以提高運算精度(同屬於實型)。
其次,有下面的規則。
當不同類型的數據進行操作時,應當首先將其轉換成相同的數據類型,然後進行操作,轉換規則是由低級向高級轉換。