循环问题的功能

时间:2017-01-08 13:56:00

标签: c

#define colsPerModule (uint8_t)32UL
#define boardArrayWidth (uint8_t)2UL
#define boardColWidth (colsPerModule*boardArrayWidth)

uint16_t padMsg(char *p)
{
    uint16_t i, x=strlen(p), c=boardColWidth/(*(DMD.fontPtr+3));
    if(boardColWidth%(*(DMD.fontPtr+3)))
        c+=1;
    for(i=0; i<c; i++,x++){
        *(p+x)=' ';
    }//user.msgRam
    *(p+x)='\0';
    return(strlen(p));
}

Pls可能会有人看看这段代码片段并找出可能出错的地方。变量*(DMD.fontPtr+3)的值为9,存储在它指向的位置。因此,c=boardColWidth/(*(DMD.fontPtr+3))应该返回值7,因为常量boardColWidth等于64(32 * 2)。但是表达式boardColWidth/(*(DMD.fontPtr+3))似乎更确切地返回值2.如果我手动将值7赋值给变量c,那么它运行良好。

0 个答案:

没有答案