1. 程式人生 > >(C語言中printf函式讀取的具體分析)

(C語言中printf函式讀取的具體分析)

(C語言中printf函式讀取的具體分析)

不多說,直接上。printf函式將傳入的資料傳送到記憶體堆區(緩衝區),然後再根據前面的(格式說明符一個個讀取,這樣會造成錯誤)


#include<stdio.h>
#include<limits.h>
#include<float.h>
int main(void)
{
    float n1 = 1.342;
    double n2 = 3.145;
    int n3 = 4321 ,n4 = 1234;
    printf("%ld %ld %ld %ld",n1,n2,n3,
n4); }

結果是在這裡插入圖片描述
在這裡插入圖片描述
n3,n4本是浮點型,結果卻輸出的值卻是n1呢
的值。這是因為堆空間。

printf 函式在取出來堆空間裡的函式值時,在取的時候,先把n1,n2 取出,(float 雖然為4位元組,但在處理過程中c編譯器把它看作8位元組),二者雖然為float,double 型別,但是取出的時候是%ld 四位元組出去的。所以n1 取到n4的值,n2 取得n1的值, n3取得n2前四位元組的值,n4取得n2後四位元組的值。