久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8670|回復: 11
打印 上一主題 下一主題
收起左側

C語言unsigned char類型的數據應該用什么格式說明符輸出

[復制鏈接]
跳轉到指定樓層
樓主
ID:452950 發表于 2020-4-3 22:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以十進制輸出一個數組中的數unsigned int a[6]={11,22,33,44,55,66};
可以用
printf("%d%d",a[0],a[1]);
或者
printf("%u%u",a[0],a[1]);
請問unsigned char a[6]={1,2,3,4,5,6};應該用什么格式說明符輸出,
在網上看到有人說用%c, %x, %u,但是仍然會碰到一些問題。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:235200 發表于 2020-4-4 01:25 | 只看該作者
%d、%f、%s、%c %x分別是輸出整數、實數、字符串和字符 十六制數的控制符,同樣一個數,輸出格式不同,則結果不同
回復

使用道具 舉報

板凳
ID:282850 發表于 2020-4-4 09:28 | 只看該作者
  友情提醒,printf是譚xx的C語言教程中最臭名招著的,不學最好。網上程序代碼我一看到有printf的基本就不看。在潛入式系統它是無用的。
回復

使用道具 舉報

地板
ID:452950 發表于 2020-4-4 09:34 | 只看該作者
csmyldl 發表于 2020-4-4 01:25
%d、%f、%s、%c %x分別是輸出整數、實數、字符串和字符 十六制數的控制符,同樣一個數,輸出格式不同,則結果 ...

但是%d是輸出signed int類型的十進制數,用來輸出char類型的數組中的一個元素,會把后面一位也讀出來。
回復

使用道具 舉報

5#
ID:452950 發表于 2020-4-4 09:47 | 只看該作者
f556 發表于 2020-4-4 09:28
友情提醒,printf是譚xx的C語言教程中最臭名招著的,不學最好。網上程序代碼我一看到有printf的基本就不 ...

我是想通過藍牙串口導出單片機考勤器存儲的考勤記錄,覺得用printf和puts比較方便控制換行和排列數據,請問有其他好的方法嗎
回復

使用道具 舉報

6#
ID:282850 發表于 2020-4-4 10:28 | 只看該作者
xxpp2011 發表于 2020-4-4 09:34
但是%d是輸出signed int類型的十進制數,用來輸出char類型的數組中的一個元素,會把后面一位也讀出來。

嵌入式系統,如單片機程序中printf基本就沒有使用的,試過為了調試用printf將數組發到即時窗口觀查,無用。沒有即時性,卻增加了700Byte多。
處理數據一般還是依靠C的基本語句,很方便。
惡心printf的另一原因,譚的 ,a= b+a; printf( ); 結果:xxx 。這種無聊的寫法,直接說明結果就行了。
前幾天用strcat()連接多個字符,送LCD12864顯示,總是莫名其妙出問題。而且編譯后字節數增加694Byte。
直接用 TM[7]=RTCSEC &0x0f+'0';爽了多倍,還保證不出錯。 我用過的MSP430F2001是128Bram,1KBFalsh。
回復

使用道具 舉報

7#
ID:452950 發表于 2020-4-4 19:02 | 只看該作者
f556 發表于 2020-4-4 10:28
嵌入式系統,如單片機程序中printf基本就沒有使用的,試過為了調試用printf將數組發到即時窗口觀查,無用 ...

我的水平還不夠,需要繼續學習
回復

使用道具 舉報

8#
ID:546770 發表于 2020-4-4 21:02 | 只看該作者
這個怎么說呢,不同的格式自然會輸出不同的信息,說白了就是這個字節的數據,你想看16進制數輸出的時候無非就是機器幫你轉換了而已。
回復

使用道具 舉報

9#
ID:452950 發表于 2020-4-4 23:05 | 只看該作者
小黑屋525 發表于 2020-4-4 21:02
這個怎么說呢,不同的格式自然會輸出不同的信息,說白了就是這個字節的數據,你想看16進制數輸出的時候無非 ...

我知道不同進制怎么輸出,問題是如何按十進制輸出長度為1字節的數據
按十進制輸出int類型變量可以用%d,按十進制輸出char類型變量沒辦法用%d,它會以給出的地址連續輸出兩個字節,如果是char類型的數組就會一次讀出兩個元素。而只輸出一個字符的%c卻會將數據轉化為ASCII碼,且只能解決0+256x~127+256x的數。
現在找不到好的辦法,要么將要顯示的數據都定義為int,要么只能不用printf函數了。


回復

使用道具 舉報

10#
ID:452950 發表于 2020-4-4 23:25 | 只看該作者
比方說       
int a,b;
a=ReadByte(Address1);b=ReadByte(Address2);
printf("%d月%d日\n",a,b);            //讀日期
j結果是4月3日,結果正常

printf("%d月%d日\n",ReadByte(Address1+6),ReadByte(Address1+5));//讀日期
結果是1027月17日
原因是我把簽到日期年月日時分秒作為char類型數組存在AT24C256的6個地址(AT24C256按字節讀取一個地址可存1字節數據)
所以用%d按十進制輸出char類型和uchar數據是有問題的,我試過%c,%i,%u,%hu,%hhu都不行
回復

使用道具 舉報

11#
ID:454000 發表于 2020-4-5 10:01 | 只看該作者
你為什么不定義成unsigned char a[6]={'1','2','3','4','5','6'};你這分明是沒有匹配好,后面改輸出也沒用
回復

使用道具 舉報

12#
ID:546770 發表于 2020-4-5 14:15 | 只看該作者
xxpp2011 發表于 2020-4-4 23:25
比方說       
int a,b;
a=ReadByte(Address1);b=ReadByte(Address2);

這個我就沒怎么想過了,串口確實是輸出ASC碼的,我之前用的是將每一位分別取出,轉換成ASC碼,放進一個數組,再將這個數組統一發送出來,要不你試試這樣子行不行。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品在线 | 夜夜骑天天干 | 亚洲国产精品一区二区久久 | 日韩无 | 中文字幕不卡在线88 | 99re6在线视频精品免费 | 精品国产欧美一区二区 | 一区二区三区亚洲视频 | 91人人视频在线观看 | 一本色道精品久久一区二区三区 | 精品久久久久久久久久久久久久 | 色资源在线观看 | h免费观看| 亚洲国产中文字幕 | 免费看黄色小视频 | 精品国产一区探花在线观看 | 久久久一区二区三区 | 欧美一区视频 | 欧美视频成人 | 一区二区三区视频在线观看 | 国产精品永久 | 日韩一区二区免费视频 | 中文字幕一区二区三区在线观看 | 欧美激情区| 国产精品久久久久久久久久久久 | 国产精品久久久久久久免费大片 | 日韩av一区二区在线观看 | 国产精品久久一区二区三区 | 亚洲国产成人av好男人在线观看 | www.国产精品 | 观看毛片| 欧美中文字幕一区二区 | 亚洲精品久久久久久久久久久 | 超碰人人在线 | www.一区二区三区.com | 国产视频精品视频 | 天天操夜夜操免费视频 | 97伦理| 欧美在线视频二区 | 亚洲美女在线一区 | 日本不卡视频 |