格式化輸出字符串,有符號整形和無符號整形


1. 最近遇到的問題,格式化輸出的時候遇到了一個錯誤

char test = -106; Report("test tlv:%d,%d,%d,%d",*o_val,(signed char)*o_val,test,(signed char)test);

看下report函數底層的代碼

char log_pc_buff[128] = {0}; int Report(const char *pcFormat, ...) { int iRet = 0; char *pcBuff, *pcTemp; int iSize = 512; va_list list; pcBuff = log_pc_buff; if(pcBuff == NULL) { return -1; } while(1) { va_start(list,pcFormat); iRet = vsnprintf(pcBuff,iSize,pcFormat,list); va_end(list);

輸出的結果

test tlv:155,-101,150,-106

總結起來,底層的vsnprintf函數,如果不強制轉換成有符號,那么就會出問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM