1. 程式人生 > >printf中輸出double的佔位符

printf中輸出double的佔位符

問:有人告訴我不能在printf中使用%lf。為什麼printf()用%f輸出double型,而scanf卻用%lf呢?

答:printf的%f說明符的確既可以輸出float型又可以輸出double型。 根據"預設引數提升"規則(在printf這樣的函式的可變引數列表中 ,不論作用域內有沒有原型,都適用這一規則)float型會被提升為double型。因此printf()只會看到雙精度數。參見問題15.2。

對於scanf,情況就完全不同了,它接受指標,這裡沒有類似的型別提升。(通過指標)向float儲存和向double儲存大不一樣,因此,scanf區別%f和%lf。

下表列出了printf和scanf對於各種格式說明符可以接受的引數型別。

格式

printf

scanf

%c

int

char *

%d, %i

int

int *

%o, %u, %x

unsigned int

unsigned int *

(續)

格式

printf

scanf

%ld, %li

long int

long int *

%lo, %lu, %lx

unsinged long int

unsigned long int *

%hd, %hi

int

short int *

%ho, %hu, %hx

unsigned int

unsigned short int *

%e, %f, %g

double

float *

%le, %lf, %lg

n/a

double *

%s

char *

char *

%[...]

n/a

char *

%p

void

void **

%n

int *

int *

%%

none

none


(嚴格地講,%lf在printf下是未定義的,但是很多系統可能會接受它。要確保可移植性,就要堅持使用%f。)

相關推薦

printf輸出double佔位

問:有人告訴我不能在printf中使用%lf。為什麼printf()用%f輸出double型,而scanf卻用%lf呢? 答:printf的%f說明符的確既可以輸出float型又可以輸出double型。 根據"預設引數提升"規則(在printf這樣的函式的可變引數列表中 ,不論作用域內有沒有原型,都適用

java輸出一個字串裏面的空格,字母還有數字的數目舉例說明

clas 視頻下載 stat int 結果 art except nta tof 9.3 輸出一個字符串裏面的空格,字母還有數字的數目。 (視頻下載) (全部書籍) public class Test { public static void main

SpringPropertyPlaceholderConfigurer替換佔位的問題

最近在做專案的時候,碰到了一個問題,糾結了好久,現在記錄一下 問題 多個Maven專案聚合的時候,每個maven都有自己的配置檔案,並且都用了PropertyPlaceholderConfigurer替換佔位符,然後啟動的時候一直報錯,說替換失敗;問題癥結就是 spirng配置多個P

Spring Boot配置檔案random以及佔位的使用

1、隨機數 在Spring Boot 配置檔案中我們可以使用後隨機數random,語法如下: ${random.value}、${random.int}、${random.long} ${random.int(10)}、${random.int[1024,65536]} 下

jpa的@Query"?"佔位的使用小坑

今天使用@Query自定義查詢語句,出現了一個錯誤: 1 java.lang.IllegalArgumentException: Parameter with that position [1] did not exist 2 at org.hibernate.jpa.spi.BaseQuer

Luastring.format佔位的使用

雖然lua中字串拼接“string.format”相對於“..”消耗較大,但有時為了程式碼的可讀性,專案中還是經常用到“string.format”。至於這兩個用法的效能看原始碼也很容易看出來,這裡就簡單說一下,前者其實呼叫C函式str_format來實現拼接的,而後者只是一個操作符,通過memcpy來拼接,

WEB前端登入註冊頁面的form使用placeholder佔位

在web的開發中有的時候我們需要使用者登入註冊頁面 需要在輸入框的裡面有灰色字型進行提示 我之前都是使用複雜的JavaScript來實現 實現點擊出現字元出現與消失 以及字元的顏色在灰色和黑色中變換 特別是密碼輸入框中需要涉及到兩個輸入框的顯示與隱藏

關於Cprintf()輸出函式的佔位(格式制定)的字元寬設定

很多人應該知道stdio.h標頭檔案裡面的printf()函式 第一個引數是輸出字串 後面的引數是代替字串中所出現的佔位符的值 我相信下面這個用法肯定大部分人都知道 %.3f輸出浮點數的小數部分的三位 printf("%.3f", 0.12345); //輸出0.123 但

C語言(C++)的 scanf,printf佔位問題

在C(C++)中,我們會經常用到 scanf , printf 這兩個庫函式,例如 scanf("%d",&n); printf("%d",n); 我們輸入輸出一些東西的時候,會用到這兩個函式,但是如上,%d 只是佔位符的一種,那其他的該是什麼呢? "%a,%A" ///表示

藍橋杯第六屆 格子輸出printf()的*修飾

#include <stdio.h> #include <string.h> void StringInGrid(int width, int height, const c

java使用佔位輸出包含動態內容的訊息

 package cn.com.itsource; import java.text.MessageFormat; import java.util.Locale; import java.util

JS實現輸出一個字第一個連續的三個數字

數字 length 個數字 pri split ret () 第一個 spl 問題描述:在一個字符串中,輸出其中第一個連續的三個數字。例如:str="1234568" 輸出:1 2 3。   var printNum = function(){     var str =

輸出不同的字打印輸出

static ges ima 不同 pub http length img put java示例演示: public static void main(String[] args) { System.out.println("請輸入任意字符(按Enter執

c與c++輸出指針和字串指針的問題

cout 指針 inux 問題 執行 格式 一個 輸出 [] 首先搞清楚在c語言中沒有字符串的類型,所以對字符串操作,有兩種形式:可以用字符指針,或者字符串數組(這裏的指針變量c,系統會為其重新分配內存。 c程序示例: 1 #include <stdio.h&g

Python3基礎 str for 輸出的每個字

dem pycha lock 學習 初學 cts .py .cn home ? python : 3.7.0 OS : Ubuntu 18.04.1 LTS

python基礎 格式化輸出 佔位

常用佔位符 %s %d %s可以接受任意型別的值 print('my name is %s,my age is %s' %('alex',18)) print('my name is %s,my age is %s' %('alex',[1,2,3])) print('[%-10s]' %'egon

2018年10月4日python字典的遍歷和佔位的使用

關於字典的遍歷: >>> dic = {"a":1, "b":2} 字典的遍歷預設是隻遍歷主鍵: >>> for i in dic: ...     print(i) a b 指定遍歷主鍵 &

易學筆記-第2章:spring的Bean/2.6 環境引數和佔位

第2章:spring中的Bean/2.6 環境引數和佔位符/2.6.1 環境引數/2.6.1.1 概念 概念與設定 指的是為了區分不同的環境而設定的引數,比如開發環境和生產環境   第2章:spring中的Bean/2.6 環境引數和佔

python語法_使用佔位進行格式化輸出

“%s”   佔位符    name = input("name:") age = input("age:") job = input("job:")   msg = ''' -------------info for %s------------- N

printf()的冷門用法+格子輸出--藍橋杯

##首先先看題目 格子中輸出 StringInGrid函式會在一個指定大小的格子中列印指定的字串。 要求字串在水平、垂直兩個方向上都居中。 如果字串太長,就截斷。 如果不能恰好居中,可以稍稍偏左或者偏上一點。 下面的程式實現這個邏輯,請填寫劃線部分缺少的程式碼。 #include