請教各位高手問題 在C語言中,整型資料以“f”格式輸出時,不對的根本原因是

時間 2021-09-12 22:20:21

1樓:北大青鳥東莞金碼學校

對資料的解釋不對 在計算機中說有的資料都是0和1 那麼怎麼解釋這些0和1就靠操作符來說明了

粗略的意思下 雖然不很精確 但是應該足夠讓你明白意思了

假設資料是11111111111111111111111111111111

%d是將這32個1據視作一個2進位制數 其值是2^32

%f是將這組資料前部分視作資料 後部分視作指數 從幾開始我也忘了 呵呵 當然會出錯啦

額不對應格式輸出全部都不可以!理由依然是資料解釋不對

比如說你要輸出'a' 但是用了%d的控制符 那麼就會輸出65 因為a在ascii表中的大小事65 也就是說資料0100 0001 你用%c輸出 就表示字元'a' 用%d輸出就表示65 明白了否?

2樓:無淚天使不不會

scanf,輸入函式,包含在標頭檔案stdio.h中,其意義是使用者通過鍵盤為一個變數賦值。

至於%f,那是個佔位符(記住:%d和int定義的變數相對應,%f與float相對應,%lf與double相對應)

答案補充

還有你這試看的書?要是的話往後看幾章在回來看,或許會懂些!

3樓:哈哈小怪獸呦

整型資料在記憶體中佔2個位元組,浮點型在記憶體中佔4個位元組,字元型在記憶體中佔1個位元組。雙精度在記憶體中佔8個位元組。不可以不對應格式輸出,系統會自動報錯的。

c語言中定義了整型資料但是輸出的時候我把它調為浮點型,執行輸出了不是想要的結果

4樓:匿名使用者

printf("b=%f,a=%d\n", (float)b, (int)a);

原因很簡單,bai格式串中du

的 %f 要求對應的引數必zhi須是浮點型,否則dao輸出就不正確版。

你已權經看到了,輸出是 b=0.000000,不正確吧?

整型資料調為浮點型必須使用 (float)b,而不是改一下格式串為 %f 就能做到的。

5樓:小川哥啦啦

計算機發現目標資料型別錯誤,不讀取,歸零處理

來看一下c語言中這個float的問題

6樓:匿名使用者

%d 按整型資料的實際長度輸出

%md m是指輸出欄位的寬度。如果資料的位數小於m,則在左端補空格;若大於m,則按資料的實際位數輸出。

%ld 輸出長整型資料

%o 以八進位制輸出整型數

%x 以十六進位制輸出整型數

%u 以十進位制輸出unsigned型資料

%c 輸出字元

%s 輸出字串

%ms 輸出字元佔m列,如果串長度小於m則左邊補空格,若大於m則按原長度輸出

%-ms 如果串長度小於m,則字串相左靠,右邊補空格

%m.ns 輸出佔m列,但只取字串的左端n個字元。這n個字元在m的右側,左邊補空格

%-m.ns 其中m,n含義同上,n個字元輸出在m列的左側,右端補空格。如果n>m,則m自動取n值,即保證n個字元正常輸出

%f 不指定字元寬度,由系統自動指定,使整數部分全部輸出,並輸出6位小數。應當注意輸出的數字並非全部都是有效數字。單精度數的有效位數一般是7位,而雙精度數的有效位數一般是16位。

%m.nf 指定輸出的數列佔m列,其中有n位小數。若數值長度小於m,左端補空格。

%-m.nf與%m.nf 的區別僅在於使輸出的數值向左端靠,右端補空格。

%e 不指定輸出資料所佔的寬度和數字部分的小數位數

%m.ne和%-m.ne含義與前面相同

%g 假設一個數要用%f和%e輸出,用%g格式時自動從這兩種格式中選出最短者

7樓:匿名使用者

因為輸出的為%d是int型別,不符合float型別的資料,若改為printf("%f\n",(float)(5+2)); 就會輸出正確資料

8樓:

型別失配

printf("%f\n",(float)(5+2));

9樓:匿名使用者

前後的資料型別不配

要不把前面的輸出格式改為%f,要不把後面的(float)去掉

10樓:

%d是不能輸出float型別的資料的。應該是printf("%f\n",(float)(5+2));

如果是你那樣寫的話,後面的數字如果是小數時,就是小數點後面不全為0的時候,輸出就不是0了,例如:printf("%d\n",(float)(5.2345+2)); 這個與計算機浮點數的編碼有關。

11樓:男boy孩

汗哦!!後面是整型啊,你為什麼要強制轉換成浮點型啊!!那樣結果就不正確了

在c語言裡,如果定義變數時int型,但輸出是用%f,為什麼結果是0.000000

12樓:匿名使用者

-18的內部表示如果看作是float,是個很小的數

所以輸出的是0.000000

一般不這樣寫,用%d,資料要對應

13樓:匿名使用者

在輸出時如果把%後面的字母用錯,則輸出的結果都是0. 當然如果是double 和float 等則會輸出為0.000000 小數點後預設為6位小數

14樓:復聯鋼鐵俠

這和資料在計算機中的儲存有關,建議去csdn看一看,是有這方面的博文的。

15樓:匿名使用者

因為%f是針對double和float型別的,預設是精確到小數點後面6位

16樓:匿名使用者

%f 是格式刷,它指定輸出的格式!

%f是指定浮點型輸出,所以把原來的int型轉化成了浮點型,即輸出0.000000

17樓:龍嘯天風

你要看清楚浮點型能表示的範圍。。

請教高手C語言問題

struct ks s 4 p void main p s 0 這裡取s 0 的位址,哪麼p就是指向陣列的第乙個節點。p p 則p指向s 1 s 1 a 3printf d,d n p a,p a 這裡要注意的是,從右往左算,p 先提供p再自增,則p a 3.然後自增,而 p是先自增,所以p已經指向...

C語言有效數字問題,在c語言中,有效數字和有效數位怎麼解釋?

輸出控制符是不分單精度雙精度的,之所以有 f和 lf,完全是為了書寫規則的完善,沒有實際意義。都是double型的。f系統預設輸出6個小數點後的位,小數點前的不管多少都輸出為什麼可以完整地把12.123456輸出出來,單精度為6 7為有效數字 g 當指數小於 4或大於等於精度時採用 e或 e的格式,...

關於for迴圈語句後的分號問題,在C語言中,for語句的後面加分號和不加分號有何不同,該分號有什麼作用?

可愛的小知道 for 表示式1 表示式2 表示式3 語句 執行過程如下 1 先求解表示式1。2 求解表示式2,若其值為真,則執行for語句中指定的內嵌語句,然後執行下面第3 步 若其值為假,則結束迴圈,轉到第5 步。3 求解表示式3。4 轉回上面第2 步繼續執行。5 迴圈結束,執行for語句下面的一...