在C語言中將很大的正整數賦值給int型別變數a,輸出

2021-03-09 22:08:37 字數 3005 閱讀 5483

1樓:聽不清啊

在不同的抄c系統中,int有不同的表示範圍。

32位(4位元組)的int,它可以表示的數字範圍是-2147483648~+ 2147483647,共可表示4294967296個不同的數。

這是因為它有點像我們用(每個檔位上只可以表示0~9)的算盤。假如我們的乙個算盤有4個檔位,它能表示從0~9999共10000個不同的數字。當我們要把比9999更大的數字存放到算盤上時,走出的部分就「丟失」了。

如果要存的數字是12345,按「老規矩」存放完畢後,讀取算盤上的數字時,由於資料發生了丟失,只能讀到2345。這是由於12345-10000=2345。

再來看計算機裡的int,如果我們要把2147483648存入到int變數中時,由於超出了範圍,就發生了丟失。讀取時,就變成了2147483648-4294967296=-2147483648了。

其它更大的數字,所變成的負數大小,也是這樣的規律(都是減去了4294967296或它的倍)。

2樓:玩尼丶瑪

int 型只可以表示來 —36768到+32767 這其實是一自

個邏輯圈,意思就是說如果該數超過了最大表示範圍那麼就從頭開始,舉個例子吧 ,如 +32788超過了最大表示範圍,比最大表示範圍多1,那麼該數其實就是-32768

c語言中把unsigned char 型資料賦值給int 型資料會不會出問題

3樓:匿名使用者

不會有問題, 反正char的數值再大也不會讓int變成負數,

我不記得這樣賦值有沒有自動的int到unsigned int的公升格,

不過肯定不會出問題就是了

4樓:匿名使用者

直接賦bai值會有du

問題。最zhi

好是顯式轉dao換。內

#include

using namespace std;

int main()

5樓:沉思的跳跳虎

這個問題,因為不來知道你具體的使用環源境,沒法作出進一步的判斷,只能將 unsigned char型的變數賦給乙個int型的變數會發生什麼事情告訴你。

unsigned char a = 'a';

int b = -1666666;

b = a;

由於unsigned char型別的變數只有乙個位元組,而int型別有4個位元組,當將乙個unsigned char型別的變數賦給乙個int型的變數後,會使int型變數的高三個位元組全部清零。在上述例項中就是b的高三個位元組全部變為0。也就是說b永遠為正整數了。

細節就是這樣了,至於會不會產生***,視你的使用環境而定了。

6樓:

直接賦值,不會有任何問題

7樓:孤獨

強制轉換一下看看,不懂c語言

c語言中將乙個浮點型賦值給整型時,會不會四捨五入?

8樓:幻翼高達

c語言中將乙個浮點型賦值給整型時,不會四捨五入,會直接捨去小數部分的資料,也可以認為是執行了下取整運算。

將浮點數(單雙精度)轉換為整數時,將捨棄浮點數的小數部分, 只保留整數部分。將整型值賦給浮點型變數,數值不變,只將形式改為浮點形式, 即小數點後帶若干個0。注意:

賦值時的型別轉換實際上是強制的。

例如執行賦值後,無論5.4還是5.6都會變成5。

9樓:_夢幻陽光

不會的,不過可以寫乙個函式自己轉換啊

#include

int fun(float x)

int main()

列印的為3和4,c語言很靈活的,樓主想要什麼幾乎都能實現

10樓:匿名使用者

不會的,如int x; 如果有 x=4.78; 則x的值是4

11樓:匿名使用者

不會,後面的小數就直接沒了,只有整數部分了

採納我哦

12樓:匿名使用者

不會的啦,整型的話,1/2=0,而不是0.5或者1,但整型變成浮點型要強制型別轉換,不知這麼解釋明白不。?

13樓:龍__鳳

不會的,看程式的執行結果:

14樓:路過

你好,不會的。浮點型資料賦給整型時,浮點型就會被自動轉換成整型,整型只是整數部分。

希望能夠幫到你。

15樓:匿名使用者

不會,一般是給你強轉成整形了,小數字就沒了,四捨五入是不存在的

16樓:匿名使用者

不會,只會把整數部分賦給整型變數

17樓:匿名使用者

不會,比如float a=4.45 那麼 printf("%d",a);輸入為4,直接把小數點後面的數刪去,不是四捨五入

關於c語言中long 型資料賦給int 型變數

18樓:匿名使用者

區分編譯器型別,long資料賦值給int資料會有不同的結果。

1 16位編譯器:

int型變數佔2位元組,long型別變數佔4位元組。當long賦值給int時,會擷取低兩位元組資料給int。

如long a = 0x12345678;

int b = a;

則b的值為0x5678。

2 32位編譯器:

int和long都是佔4位元組,所以二者賦值不會有任何改變。

3 64位編譯器:

int佔4位元組,long佔8位元組。當long賦值給int時,會擷取低四位元組資料給int。

19樓:匿名使用者

long好像是64位,int是32位,在記憶體中的表示是:低位在左,高位在右。long的65536的十六進製制00010000h,分高低位在記憶體中放的位置為0000 0001,賦值給int時,只擷取前面部分的0000,所以就是值就是為0了

c語言整型數賦值給浮點型的問題,c語言中將乙個浮點型賦值給整型時,會不會四捨五入?

b a 2 是這麼計算的 a是整型變數,2也是,因此計算被當成整型計算,得到整型結果0,然後發內現b是float型的,再將整容型結果0進行資料型別轉換賦值給b。因此應當將a 2算式中分子或分母轉換成float型就能正確計算了,比如 b float a 2 或b a 2.0 或b a b 2 c語言中...

C語言中給浮點數賦值問題c語言中將乙個浮點型賦值給整型時,會不會四捨五入?

float d 0.5 這叫宣告和初始化。願意寫 float d 0.5f 也可以。常數 0.5 預設 處理成 double 型。0.5f 規定 它 是 float 型.其實這不是什麼大問題。相對c語言中別的問題,這個可以完全忽略。float d 這叫宣告。d 0.5 這叫賦值語句。如果你前面有過 ...

C語言賦值運算子,在C語言中11種賦值運算子的具體含義,用法

你宣告為 無符來號char,則運算會按無符號源處bai理。你宣告為有符號duchar,則運算會按有符號處zhi理。例如 unsigned char c char d c 376 d 376 printf c d d d n c,d 列印出 daoc 254 d 2 定義的意思是說這是無符號數,它可以...