printf當中有個轉換聲明,按照類型分為整數,浮點數,字符
整數:%d和%i一樣,幾乎沒有任何不同,%o以八進制輸出,%u以無符號十進制進行輸出,%x和%X分別是大小寫的十六進制
浮點數:%a和%A,%e和%E,%g里面會進行一個匹配,當前數值是適合用科學計數法(1.4*10E23這種類型)還是小數來表示進行匹配,有效數值會進行區分,不會記住多余的0;%f和%lf是最常用的
字符用%c
字符串用%s,表示的有兩種,一種是存儲在數組當中,一種是存儲在常量區當中
指針用%p
%用%%,單獨的%無法再程序中表現
還有一種修飾符
標記:-代表當前數值會左對齊的方式;+會顯示當前數值符號;空格代表如果當前打印時規定了最大位數時,前面或后面會以空格方式進行補全;0和空格類似,只是會以0的方式補全;#非常特殊,在每種場合下含義都不相同,在%o和%x前面是顯示格式的作用;如在八進制前加0,在十六進制前加0x;在%f和%e的時候,保證打印一個小數點;使用%g或%G的話,是為了防止結果后面的0被刪除
數字,在%后面可以加數字,數字表示當前打印的最小寬度,如%d,打印5,用%2d,打印出來是05
.數字:.數字在%e、%E時,用科學計數法輸出數值、%f和%lf時,表示小數右邊數字的位數;在%g和%G時,表示有效數字的最大位數;在%s時,表示打印字符的最大數量;在整數數,表示待打印數字的最大位數
Demo代碼
#include<stdio.h>
#define INTDEMO 250
int main()
{
const double DOUBLRDEMO = 3.14159;
const short SHORTDEMO = 0XFFFF;
printf("%2d\n", INTDEMO);
printf("%10d\n", INTDEMO);
printf("%-10d\n", INTDEMO);
printf("%f\n", DOUBLRDEMO);
printf("%Lf\n", DOUBLRDEMO);
printf("%4.2Lf\n", DOUBLRDEMO);
printf("%10.3Le\n", DOUBLRDEMO);
printf("%10.3Lf\n", DOUBLRDEMO);
printf("%010.3Lf\n", DOUBLRDEMO);
printf("%+010.3Lf\n", DOUBLRDEMO);
printf("%c\n", SHORTDEMO);? //先轉換成int類型,再進行輸出SHORTDEMO會變成0XFFFFFFFF
float f_num = 3.0;
double d_num = 3.0;
int i_num = 2000000000;
long l_num = 1234567890;
printf("%.lg %.lg %.lg %.lg\n",f_num,d_num,i_num,l_num);
printf("%ld %ld\n",i_num,l_num);
printf("%ld %ld %ld %ld\n",f_num,d_num,i_num,l_num);
/*float會轉換成64位的double類型輸出
如果輸出的內容牛頭不對馬嘴
100%因為他會按照我們給定的轉換符來確定我在我的參數中取多少位的數據
在確定了這件事情之后,什么事情都變得清楚了
因為它是按照你規定的長度來讀取的,他有可能會把一個變量當成兩個數據讀取
所以數據之間會變得天差地差
*/
printf("I""Love","Mark"); //這種代碼是不能出現在程序員當中的,出現了就可以撞墻了
return 0;
}