簡體   English   中英

使用哪個說明符來打印long double的最大值/最小值?

[英]Which specifier to use to print the max/min value of long double?

作為一名新的C編程學習者,我試圖了解我應該在printf中使用哪個說明符來顯示long double類型的最大值和最小值。 根據以下StackOverflow答案,我可以使用%Lg: https : //stackoverflow.com/a/18797417/1536240

但這似乎並不能解決問題。 我已經嘗試過%e,%f,%Lf,%g和%Lg,但是它不起作用。 這是我遇到問題的代碼的相關部分(我正在做的其他工作都很好):

printf("**long double**\nStorage size: %d bytes \t Minimum value: %Lg 
\t Maximum value: %Lg\n", sizeof(long double), LDBL_MIN, LDBL_MAX);

我在頂部包括了這些頭文件:

#include <stdio.h>
#include <limits.h>
#include <float.h>

我有點迷路了。

編輯:對不起,沒有解釋什么是輸出。 我現在正在使用%Lg,並且正在終端中獲取它。

我的輸出

雖然您應該在問題中提供獲得的結果,但您的錯誤很可能是使用%d打印sizeof的結果,該結果應與%zu一起打印。

這會導致未定義的行為。 對於某些平台,由於int的寬度與size_t的寬度不匹配,因此在堆棧上的其余printf參數將被誤解。

對於long double "%Lf"應使用"%Lf""%Lg" ,對於sizeof返回類型size_t應使用%zu (自C99起,包括C99)。

當前,程序的行為是不確定的%d不適合size_t類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM