在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的值已經增加...