[英]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.