KEIL C51 printf格式化輸出特殊用法

來源:互聯網
上載者:User

標籤:

dragoniye   發布:2014-02-15 12:44   分類:硬體     搶沙發  

 

/*******************************************
KEIL裡擴充出了b,h,l來對輸入位元組寬的設定:
(1)b八位
(2)h十六位(預設)
(3)l三十二位

在Keil C51中用printf輸出一個單位元組變數時要使用%bd,如
unsigned char counter;
printf(“Current count: %bd\n”, counter);//輸出8位”十進位有符號整數”
printf(“Current count: %bx\n”, counter);//輸出8位”無符號以十六進位表示的整數”

而在標準C語言中都是使用%d:
printf(“Current count: %d\n”, counter);

1. 格式化規定符
Turbo C2.0提供的格式化規定符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━
符號                   作用
──────────────────────────
%d               十進位有符號整數
%u               十進位不帶正負號的整數
%f               浮點數
%s               字串
%c               單個字元
%p               指標的值
%e               指數形式的浮點數
%x, %X           無符號以十六進位表示的整數
%0               無符號以八進位表示的整數
%g               自動選擇合適的標記法
━━━━━━━━━━━━━━━━━━━━━━━━━━
說明:
(1). 可以在”%”和字母之間插進數字表示最大場寬。
例如:  %3d    表示輸出3位整型數, 不夠3位靠右對齊。
%9.2f 表示輸出場寬為9的浮點數, 其中小數位為2, 整數位為6,
小數點佔一位, 不夠9位靠右對齊。
%8s    表示輸出8個字元的字串, 不夠8個字元靠右對齊。
如果字串的長度、或整型數位元超過說明的場寬, 將按其實際長度輸出。
但對浮點數, 若整數部分位元超過了說明的整數位寬度, 將按實際整數位輸出;
若小數部分位元超過了說明的小數位寬度, 則按說明的寬度以四捨五入輸出。
另外, 若想在輸出值前加一些0, 就應在場寬項前加個0。
例如: d 表示在輸出一個小於4位的數值時, 將在前面補0使其總寬度為4位。
如果用浮點數表示字元或整型量的輸出格式, 小數點後的數字代表最大寬度,
小數點前的數字代表最小寬度。
例如: %6.9s 表示顯示一個長度不小於6且不大於9的字串。若大於9,   則
第9個字元以後的內容將被刪除。
(2). 可以在”%”和字母之間加小寫字母l, 表示輸出的是長型數。
例如:    %ld    表示輸出long整數
%lf    表示輸出double浮點數
(3). 可以控制輸出靠左對齊或靠右對齊, 即在”%”和字母之間加入一個”-” 號可
說明輸出為靠左對齊, 否則為靠右對齊。
例如:    %-7d   表示輸出7位整數靠左對齊
%-10s 表示輸出10個字元靠左對齊
2. 一些特殊規定字元
━━━━━━━━━━━━━━━━━━━━━━━━━━
字元                            作用
──────────────────────────
\n                    換行
\f                    清屏並換頁
\r                    斷行符號
\t                    Tab符
\xhh                  表示一個ASCII碼用16進表示,
其中hh是1到2個16進位數
━━━━━━━━━━━━━━━━━━━━━━━━━━
*******************************************/

#include <reg52.h>
#include <stdio.h>

void delay(unsigned int time)
{
unsigned int i,j;
for(i=0;i<1000;i++)
for(j=0;j<time;j++);
}

void main(void)
{
SCON = 0×50;    //串口方式1,允許接收
TMOD = 0×20;    //定時器1定時方式2
TCON = 0×40;    //設定時器1開始計數
TH1 = 0xFD;     //11.0592MHz 9600傳輸速率
TI = 1;
TR1 = 1;        //啟動定時器

while(1)
{
printf(“Current count: %lx\n”,0×12345678);//32位十六進位數
delay(100);
}
}

KEIL C51 printf格式化輸出特殊用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.