從C中變化過來的各種語言的printf輸出格式

2022-03-10 04:58:05 字數 3099 閱讀 8133

在c、php和shell中經常可以碰到printf的使用,特別是在php中printf的相關變種有好幾個:print、printf、sprintf、vprintf、vsprintf

在這些語言中,printf基本上都是格式化輸出字串,而且基本都是在c的基礎上演變來的,下面就以php中的這些做個記錄

雖然php中有這麼多,但是其中他們的差別相對來說比較小

1、print     

print 「hello php」或 php(「hello php」)

print 只是乙個語言結構,並不是乙個函式,就類似於echo;所以可以不使用() 而直接「」這樣進行輸出

print和echo的區別是:print有返回值,總是返回 1。

2、printf()     這是乙個輸出函式,所以不是和上面一樣使用「」的方式使用

函式原型:int printf ( string $format [, mixed $args [, mixed $... ]] )

3、sprintf()     基本和printf一樣,重要的是兩者之間的區別

函式原型:string sprintf ( string $format [, mixed $args [, mixed $... ]] )

區別:printf()將格式化的字串輸出到標準輸出,返回輸出字串的長度           

sprintf() 返回字串,不會將字串輸出到瀏覽器上

4、vprintf()和vsprintf()

和上面的區別就是:它們只有兩個引數:乙個輸出格式,乙個變數陣列。

上面的printf()和sprintf()除了第乙個固定的輸出格式外,後面的引數變數,是根據字串中需要輸出的變數資料而對應確定的。

現在,說說重點的輸出格式(和c語言一樣,並且shell也是這樣),就是上面這些函式的第乙個引數

原型:%[

padding-character][-

][width

][.precision

]type

黑色表示必須的,中的表示可選的(根據實際需求)

% 表示轉換說明開始,注意要輸出%時,採用 %% 的方式

-    表示對齊方式,預設左對齊,- 則說明要右對齊,

width    長度,這個長度是:整數部分+.+小數部分 的長度就是說:3.4是3個長度,30.4是4,就是這塊按字元計算。

.precision 小數部分。. 表示小數點,precision表示小數點後保留幾位。

例如:比如上面width是 10 ,padding-character是0,引數是:30.4,precision是 2,則type是f

則輸出什麼?

0000030.40

1

<?php2 /*

3* create_wangxb_20150116

4* print 相關知識點5*

6*/7echo "*** print 只是乙個語言結構,並不是乙個函式,就類似於echo;所以可以不使用() 而直接「」這樣進行輸出 ***";8

$res0 = print "hello php";

9echo "

";10

$res1 = print("hello php");

11echo "

*********** print和echo的區別是:print有返回值,總是返回 1 ****************

";12

echo "print 返回值:res0=$res0

print()返回值:res1=$res1

echo 是沒有返回值的";

13echo "

*********** 定義變數:num=3.4 ***********

";14

$num = 30.4;

15echo

$num;16

echo "

";17

$res2 = printf('this number is %.2f',$num

);18

echo "

******** printf()將格式化的字串輸出到標準輸出,返回輸出字串的長度 ******

";19

echo "printf() 返回值 res2: $res2

";20

echo "

******** sprintf() 返回字串,不會將字串輸出到瀏覽器上 ******

";21

$res3 = sprintf('this number is %.2f',$num

);22

echo "sprintf() 返回值 res3(看清楚,這裡我們輸出的是返回值): $res3

";23

24echo "

比如上面width是 10 ,padding-character是0,引數是:30.4,precision是 2,則type是f

";25

printf("num is %010.2f",$num

);26

27echo "

padding-character 是 * 時,即非空格和0時

";28

printf("num is %'*10.2f",$num

);29

30echo "

第二項 [-] 時,即右對齊時

";31

printf("num is %'*-10.2f",$num

);32

33echo "

第三項 width 時,即長度改變,注意要算上小數點這個字元

";34

printf("num is %'*-8.2f",$num

);35

36echo "

第四項 precision 時,即小數點長度改變

";37

printf("num is %'*-8.3f",$num

);38

39echo "

第五項 type 時,即改變輸出型別 d

";40

printf("num is %'*-8d",$num

);41 ?>

輸出:

C 較C語言的變化

在c 命名空間中,std是標準的命名空間。企業規範 g stu 以g 開頭的是全域性變數 stu t 以 t 結尾的代表typedef規則定義的別名 1 自定義乙個命名空間 namespace spacea 命名空間定義結尾無分號 2 命名空間的使用 法1 using spacea g a 法2 s...

C 中的各種cast

先大體說一下 這段是自己胡說的 static cast 相當於隱式的型別轉換.dynamic cast 主要用於類層次間的上行轉換和下行轉換 很透徹,很精典 reinterpret cast 最不安全的轉換,可用於對映兩個完全不同的運算元 比較官方的 static cast執行非多型的轉換,用於代替...

c中各種 的比較

接下來,通過示例徹底理解自增運算子的兩種用法 自減的用法與之類似,只不過是加1變成了減1 1 i和i 的區別 如清單1 注意 中的注釋 cpp include int main void 例子輸出結果 cpp a 9,b 11 在例子中,第7和第8行的作用一樣,僅僅是為變數i加1,這時i的值已經增加...