在C語言中INT怎麼表示無窮大(小)

2022-12-02 20:06:08 字數 6236 閱讀 6259

1樓:風若遠去何人留

int不能表達真正的無窮大或者無窮小。

在c語言中,int為整型型別,根據不同平臺不同,有16位(2位元組)和32位(4位元組)兩種,其中32位int為目前主流。

無論哪種int型別都有其表達範圍,其中

16位int能表示的範圍為-32768~+32767

32位int能表示的範圍為-2147483648~+2147483647

從這個可以看出,int是無法表達真正的無窮大和無窮小的。

但數學中的無窮大和無窮小是指一種概念上存在實際上永遠無法達到的數值,這樣在程式設計中,就可以根據程式要求使用一些值來替代無窮大和無窮小的概念。

一般有如下兩種情況:

1 程式中對處理的資料規模有限制,比如程式中輸入的數值只在0~100之間,那麼可以設定無窮大為101,而無窮小為-1。因為它們也是在使用中無法達到的值。

2 程式中對資料規模沒有明確的規定。但是既然應用的int型別,就必須是int型別可以容納的,否則出現溢位就可能導致錯誤。 這樣,可以用int所能表示的最大值和最小值用做無窮大和無窮小。

比如在32位情況下,無窮小可以是-2147483648,無窮大是2147483647。

如此長的一段資料是很難記憶的,由計算機對整型資料的儲存原理可以得知,這兩個數值的二進位制值分別為0x80000000和0x7fffffff。

類似的在16位下,無窮大為0x7fff,無窮小為0x8000。

2樓:匿名使用者

如果你的數很大,大的不可**,那麼你就這樣弄char *p;

然後動態地申請記憶體。

這樣,每一位位元組代表一位數。

當然這樣動態申請記憶體也不好,因為你也不好確定總的位數吧!

那就直接定義p[n],這裡的n就是可能出現的最大位數。

當然,你也可以使一個位元組代表兩位數,代表一位數似乎有些浪費,但是浪費也浪費不了多少,更主要的原因是,這樣計算方便些,一個位元組代表兩位,實在是麻煩!

方便只是相對的,長度很大的肯定是不好計算的!

如果不是很大,但long 和int都滿足不了,那就試試longlong吧!

3樓:

沒有辦法表示無窮大和無窮小.

short int

long int

unsigned short int

unsigned long int

自身表示的是16位或32位數,有極限.

4樓:匿名使用者

int 的範圍是 16位(有的系統int可能是16位的)的話是 -32768 ~ 32767

32位的話 約-2g ~ 2g

c語言中正無窮大怎麼表示

5樓:八哥說科技

c語言中沒有無窮大的資料型別,一般的整數最大值使用int_max int表示。

極限標頭檔案limits.h專門用於檢測整型資料資料型別的表達值範圍。要判斷某種特定型別可以容納的最大值或最小值,一種簡便的方法是使用ansi標準標頭檔案limits.

h中的預定義值。

該檔案包含一些很有用的常量,它們定義了各種型別所能容納的值。其中int_max int表示有符號最大值2147483647,int_min int表示有符號最小值。

對於整數型別,在使用2的補碼運算的機器(你將使用的機器幾乎都屬此類)上,一個有符號型別可以容納的數字範圍為[- 2^(位數-1) ]到[+ 2^(位數 -1)-1],一個無符號型別可以容納的數字範圍為0到(+ 2^位數 )。

擴充套件資料:char_bit char的二進位制位數(bit)

char_max char的有符號整數最大值

char_min char的有符號整數最小值

mb_len_max 多位元組字元的最大位元組(byte)數

long_max long的十進位制最大值

long_min long的十進位制最小值

schar_max signedchar的十進位制整數最大值

schar_min signedchar的十進位制整數最小值

shrt_min short的十進位制最小值

shrt_max short的十進位制最大值

uchar_max unsignedchar的十進位制整數最大值

uint_max unsignedint的十進位制最大值

ulong_max unsignedlongint的十進位制最大值

ushrt_max unsignedshortint的十進位制最大值

6樓:匿名使用者

#include

在上面的標頭檔案中包含了很多的極限值

比方說如果是int, 那麼無窮大可以用int_max來表示同理, 無窮小可以用int_min

7樓:一口沒水的枯井

1 正無窮大即比任何其他的數都大,所以在c語言中特定資料型別的正無窮大則可以用該資料型別的最大值來表示

2 藉助limits.h庫,裡面定義了各種資料型別的最大值3 部分資料型別及其對應的最大值如下

int->int_max

unsigned int ->uint_maxlong->long_max

unsigned long->ulong_max

8樓:匿名使用者

int 型 能表示的最大數

32位系統的話,是 0x7fffffff

c語言 int最大值是多少??

9樓:幻翼高達

c語言中,int最大值是2147483647。

c語言中,int、long int 、unsigend long int都是4個位元組,其可以用sizeof()函式得出。佔用4個位元組的整數其最大能表示數的個數是2^32(4個位元組共32位)。

int、long int都是帶符號整數型別,因此它們能表示的整數範圍為-2147483648~2147483647,也就是-2^31~2^31-1。unsigend long int是無符號整數型別,能表示的整數範圍是0~4294967295,即0~2^32-1。

同理,short int是2個位元組的帶符號整數型別,能表示的整數範圍是0~65535,即0~2^16-1。

10樓:大野瘦子

int最大值,根據編譯器型別不同而變化,具體如下:

1、對於16位編譯器,int佔16位(2位元組)。

int的最大值為32767.

2、對於32位和64位編譯器,int佔32位(4位元組)。

int的最大值為2147483647

3、可以通過列印sizeof(int)檢視平臺對應的int佔用位元組數,乘8後即為位數。

最高位為符號位,如位數為n,則最大值為

2^(n-1)

即2的n-1次冪。

得的c語言中int最大值與最小值的方法

方法1:

printf("%d\n",~(unsigned int)0/2);

當無符號0以二進位制儲存在記憶體中時,每一位都為0,以32位int為例,0(unsigned int)的二進位制為:

00000000 00000000 00000000 00000000

按位取反(~)後變成:

11111111 11111111 11111111 11111111

此時的十進位制為:

4294967295

除以2(int型別中有一半表示負數,且比正數多一個),得到:

即為32位int型最大值

方法2:

#include

int main()

int i=0,j=1;

while (j>0)

j++;

i++;

printf("%d\n",i);

printf("%d\n",j);

return 0;

整數值越界後符號改變

方法3:

#include

int main()

int i=0;

i=~i;

i=i<<(sizeof(int)*8-1);

printf("%d\n",i);

i--;

printf("%d\n",i);

return 0;

計算機採用補碼儲存,先補碼得到-1(即各位全為1),然後利用移位運算得到最小,進而得到最大。

11樓:小周愛嘮叨

16位編譯器說明:

int佔16位。

記憶體2位元組。

最大值:32767

這也是最原始版本的要求。

32位和64位編譯器:

int佔32位。

記憶體4位元組。

最大值:21474836473

位數的增加,那麼自然位數也在倍增。

決定int最大值的主要原因,根據編譯器型別不同而變化。

所以某些編寫的程式,不能成功的在電腦中執行,多半與編譯器有關係,可能並不是程式的原因。

一般程式的表達方式,最高位為符號位,位數為n位時,則最大值為2^(n-1)即2的n-1次冪。

關於演算法的問題,自然也要使用我們所學習的數學知識。

在編譯器中,可以使用sizeof(int)檢視佔用的位元組數,將求取的數值通過pintf列印在控制檯。

12樓:風若遠去何人留

int最大值,根據編譯器型別不同而變化。

1 對於16位編譯器,int佔16位(2位元組)。

int的最大值為32767.

2 對於32位和64位編譯器,int佔32位(4位元組)。

int的最大值為2147483647

3 可以通過列印sizeof(int)檢視平臺對應的int佔用位元組數。乘8後即為位數。

最高位為符號位,如位數為n,則最大值為

2^(n-1)

即2的n-1次冪。

13樓:匿名使用者

這個和編譯器版本有關。

在16位編譯器下(很多經典書籍中使用的都是這個版本)int 是2個位元組,long是4個

在32位編譯器下(目前能夠正常使用的多數都是這類的)int 是4個位元組,long是4個

14樓:

bits/stdc++.h中有巨集int_max(這是c++的,但其實c的也是一樣的)

值為2^31-1,即2147483647

15樓:匿名使用者

是的,在32位機中就是這個結果。

16樓:匿名使用者

#include

#include

int main()

c語言中給出一個很大的數字(int的範圍不夠),該怎麼計算它的各位數字和?如191919191919的和為60.

17樓:

#include "stdio.h"

void main(void)

18樓:江城子

陣列,把數字當字串輸入,然後轉換為int型存入陣列,再相加

19樓:匿名使用者

1按字串輸入

2.按各位拆分到陣列中

3.陣列求和即可

採納我哦

20樓:幻想的渴望

用一個陣列。比如說a[0]儲存個位,a[1]儲存十位,最後相加即可

21樓:匿名使用者

以字串的方式輸入

求和時 s[i]-『0』(各位數字的值)再求和

22樓:餘暉

樓主,可以把你的問題解訴清楚好麼

23樓:倒退不悔

#include#include

main()

c語言中怎樣輸入一個很大的整數

24樓:天雲小店

可以利用字元陣列來存放整數的各位數值,即將整數當成一串字元來輸入。

如果要輸入12345678901234567890,則定義一個char型陣列a[20],將使用者輸入的整數當成一串字元存入字元陣列a中。

char a[20];

scanf("%s", a);   // 輸入12345678901234567890,即可將該整數輸入到字元陣列a當中

// 則陣列a中各元素值為a[0]='1', a[1]='2', a[2]='3', ....... , a[19]='0'

// 在進行運算的時候將字元轉換為數字即可(即a[i]-'0')

在c語言中int和double怎麼轉換

1 開啟baivc軟體,新建一個空白的vc專案文du件 2 編寫轉換zhi程式,首dao先新增標頭檔案,在main主函式回中定義int型別變數答sum,count,再定義double型別變數todouble,並進行強制型別轉換,強制轉換的格式就是括號加要轉換的型別,最後使用printf列印結果 3 ...

在c語言中,表示什麼意思, 在C語言中,表示什麼意思

樓上 說的太專業了 說的通俗一點就是 並且 的意思 與 運算子 true true true 0 1 false c語言中 是什麼意思?是與的意思 即左右兩邊都成立才成立 應該是要 左邊成立且右邊不成立才成立 00000000000000000000 的優先順序大於 所以 a b就是 a b 兩個 ...

在C語言中,int函式與void函式有什麼區別

1 作用不同 主函式copy 返值可以定義為兩種,int型或void型。區別在於int型main函式需要有返值,而void型則不需要。main函式返zhi值作用 每個c程式最終的目標是為了執行,也就是編譯成可執行檔案後,被執行。main函式的返dao值將被傳遞到主調程序中,主調程序可以通過返回值判斷...