當前位置:首頁 » 編程語言 » c語言printf佔用問題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言printf佔用問題

發布時間: 2022-11-12 20:17:34

1. 關於c語言printf()函數格式說明的問題

對於浮點輸出格式來說
%m.nf
其中m是輸出寬度,n是精度,f是格式化控制符
m指定的是輸出數字字元串的最小長度,比如你輸出
printf( "%2.3f" , 123.456 ); // 由於實際輸出的數字123.456共有7個字元,大於2個字元數量,所以這里的2其實實際上沒起到什麼作用,不過如果你printf( "%8.3f" , 123.456 );,8-7=1,那麼結果將在數字前面補一個空格字元,使用printf( "%08.3f" , 123.456 );則是補一個字元'0'
所以e如果存在於被輸出的數字串里的話(比如使用%e),它也是要佔用m的計數的,包括小數點。
n則是指定輸出精度,也就是小數點後保留幾位,默認不指定.n的時候printf會自動調整輸出到默認精確位,如果指定了n的話,printf則把數字保留小數點後n位輸出。
所以printf( "%f", 123.456 );如果輸出123.456000的話,那麼printf( "%.2f", 123.456 );則輸出123.46,

2. C語言printf的格式問題

除了小數點要佔據一列,負號也要佔據一列的啊!

對於float類型,不論%nf這里的n是幾,只要不是n.m之類的,都按默認輸出(也就是保留6位小數)

float只能接收7位有效數字,後面都是無效的填充數字
應該也不是隨機的,但這個深入追究下去,意義不大

3. 萌新關於C語言printf函數地一些問題

printf是一個可變參數的函數,所謂可變參數,就是參數個數類型都可以不固定
那麼這種類型的函數,是如何獲取它的參數呢?
在C中,對函數的參數有約定,它們在內存中按參數聲明的順序升序排列,因此能取得第一個參數,就能取得所有的參數。
那麼,又是如何知道要取得多少個參數的?
一般的做法是在第一個參數中體現,比如printf,第一個參數里格式化串的個數(即%+格式化字元串的組合有多少個),就代表了後面還有多少個參數,你的問題中,兩個%d說明有兩個參數。
那為什麼又能輸出5,這是因為按順序從第一個參數"%d,%d\n"開始算,第三個參數的地址剛好和變數g的地址是重合的。

4. 有關C語言printf輸出問題

這是要輸出-36這個數字。
%d是按整型輸出,
-8.4中,8表示輸出的數字佔8個位置,0.4表示的是輸出的數字顯示4位數,負號表示左對齊。
所以輸出的應該是:"-0036 」
負號、0036、三個空格,共8個位置,數字顯示4個位,不足的補0,左對齊,所以右邊空幾個位置。

以上信息希望對你有幫助。。^^

5. C語言 printf 佔位符問題

printf("7.2%f",x);佔7位,保留兩位小數

6. C語言中printf的問題

這與編譯器處理前++的過程順序有關。對於有的編譯器來說,第二種情況輸出就是124,123。而有的編譯器是先把前++全都做完,再從後向前做計算奪棧操作(輸出124,124的編譯器就是這一種)就得出124,124了。由於C沒有具體規定具體處理順序,編譯器開發商用以上兩種辦法都是不違規的。

7. c語言wsprintf和printf的問題

你所創建的工程是否是UNICODE工程?
我看你使用atof轉換,說明轉換之前的字元串是ANSI字元串,wsprintf是自適應的函數,它在非UNICODE環境下,會把字元串轉換成ANSI字元串,而在UNICODE環境下會把字元串轉換成UNICODE字元串,肯定會不相等了。

8. linux 後台程序中printf占資源嗎 printf函數怎麼執行的

linux 後台程序中printf占資源,printf函數在c語言中產生格式化輸出的函數(定義在 stdio.h 中),其向終端(顯示器、控制台等)輸出字元。
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。

9. 一個奇怪的C語言問題,涉及到指針、數組、堆棧、以及printf,希望C語言大神們幫幫忙。

剛才我也沒想明白,看到了dripple11的回答,再去想了一下,現在想明白了。他的回答是正確的。

又回頭看了一下,發現,lz沒有完全搞懂。
順便鄙視一下whatplay的回答,是個傻X。

printf函數,正如第一個人所說,調用函數printf前先要將形參壓棧,這時候要計算*p
所以,第一條printf語句已經把參數算出來並放到棧頂保存了。然後調用printf函數(函數調用需要用到棧建立訪問連和控制鏈,而,原來的函數f執行完了,原本f是在棧頂的,所以,函數f的棧空間釋放。數組空間也被釋放),printf佔用了棧,所以,把原來函數f的棧空間內容修改了。所以,第一條printf語句是可以得到結果的。後面因為arr空間的內容已經被修改,所以,之後的printf語句都得不到結果。

順便再解釋一下printf("%s\n",p);得到的為什麼是亂碼。
正如上面所說,先計算參數p的值保存棧頂。保存的值為arr的地址。然後調用printf函數,把棧頂空間內容修改了。雖然保存了地址,但是原來的內容已經修改了,所以得不到結果。

whataplay,我只是鄙視你的回答,沒有罵你。因為你的回答是答非所問!

10. 關於C語言printf()函數格式說明的問題

對於浮點輸出格式來說
%m.nf
其中m是輸出寬度,n是精度,f是格式化控制符
m指定的是輸出數字字元串的
最小長度
,比如你輸出
printf(
"%2.3f"
,
123.456
);
//
由於實際輸出的數字123.456
共有7個字元,大於2個字元數量
,所以這里的2其實實際上沒起到什麼作用,不過如果你printf(
"%8.3f"
,
123.456
);,8-7=1,那麼結果將在數字前面
補一個空格字元
,使用printf(
"%08.3f"
,
123.456
);則是補一個字元'0'
所以e如果存在於被輸出的數字串里的話(比如使用%e),它也是要佔用m的計數的,包括小數點。
n則是指定
輸出精度
,也就是
小數點後保留幾位
,默認不指定.n的時候printf會自動調整輸出到默認精確位,如果指定了n的話,printf則把數字保留小數點後n位輸出。
所以printf(
"%f",
123.456
);如果輸出123.456000的話,那麼printf(
"%.2f",
123.456
);則輸出123.46,