1.常規–格式化輸出
%d //整型輸出
%ld //長整型輸出
%o //以八進制數形式輸出整數
%x //以十六進制數形式輸出整數,或輸出字符串的地址
%u //以十進制數輸出unsigned型數據(無符號數)注意: %d與%u的區別是,有無符號的數值范圍不同,也就是極限的值不同,不然數值打印出來會有誤%c //用來輸出一個字符
%s //用來輸出一個字符串
%f //用來輸出實數,以小數形式輸出,默認情況下保留小數點6位
%.5f //用來輸出實數,保留小數點5位
%e //以指數形式輸出實數
%g //根據大小自動選f格式或e格式,且不輸出無意義的零
2.特殊–格式化輸出
整數的格式化取值
#include <stdio.h>int main() {int a = 123, b = 123456;printf("%5d\n", a); // 默認右對齊,且最少取5位整數,多余5位全取,不足5位使用空格左面補全printf("%05d\n", a); // 使用0代替空格,在左邊補齊位數printf("%-5d\n", a); // 左對齊,不足位數,使用空格補全printf("%-05d\n", a); // 左對齊,不足位數,還是用空格補全printf("%5d\n", b); // 超過5位全取}
123
00123
123
123
123456
小數的格式化取值
#include <stdio.h>
int main() {double a = 123.326, b = 90.12;printf("%.2f\n", a); // 取2位小數,且第三位四色五入printf("%.3f\n", b); // 取3位小數,且不足的用0補全printf("%4.2f\n", b); // 取至少4位字符,2位從b的左邊開始取2位,剩余2位<整數2位+小數點1位,所以3位全部輸出printf("%7.2f\n", b); // 取至少7位字符, 2位小數,剩余5位>整數2位 + 小數點1位, 多出來的2位用空格補全}
123.33
90.120
90.1290.12 // 小數點也占一位字節
字符數組的格式化取值
#include <stdio.h>
#include <time.h>int main() {char str[30];char s1[5] = { 'a', 'b', 'c' };printf("%s==\n", s1); // 打印完整的字符數組(字符串)printf("%2s==\n", s1); // 打印至少2個字符printf("%5s==\n", s1); // 打印至少5個字符,不足的用空格在左邊補齊printf("%-5s==\n", s1); // 打印至少5個字符,不足的用空格在右邊補齊printf("%4.2s==\n", s1); // 總共輸出4個字符,但是有2個需要在s1里面從左取,剩余的字符用空格默認在左邊補全printf("%.2s==\n", s1); // 總共輸出2個字符,這2個字符從s1里面的左邊開始取}
abc==
abc==abc==
abc ==ab==
ab==
目前常用%d,%s,%.2f
ROS_INFO("request_data:num1=%d,num2=%d",num1,num2);
參考:
[1]http://t.csdnimg.cn/dtOSO