c -当向函数参数传递字符时,不知道何时使用int类型还是char类型



目前在课堂上我们正在学习c的指针,地址和volatile。在一个例子中,我们有以下两个函数,可用于使用Altera DE2板将字符绘制到VGA监视器上。

对于下面的代码,使用了int字符,但我和我的同事认为它应该是char字符,因为我们将一个字符传递给函数参数。

void drawChar( int x, int y, int character )
{
    volatile unsigned char *pChar;
    pChar = getCharAddr(x,y);
    *pChar = ( character & 0x7f );
}

unsigned char *getCharAddr( int x, int y )
{
    y = max(0,min(MAX_Y_CHARS-1,y));
    x = max(0,min(MAX_X_CHARS-1,x));
    return (unsigned char *)(ADDR_CHARBUF + (((y<<MAX_X_CHAR_BITS)|(x))<<0));
}
下面是一个使用函数drawChar的示例代码:
drawChar( x, y, ‘D’ ); // draws ‘D’ at <x,y>!

谁能解释一下为什么这里用int ?

我们认为这与屏蔽和必须从字符中获得二进制值有关……虽然我们不确定。

如果您将字符类型替换为char,您将收到相同的结果。char、int、short等都是整型。写这个函数的人,是唯一一个可以告诉你为什么他们在这种特殊情况下选择int的人,但是你和你的同事是正确的,通常最好使用char,因为它代表了数据的目的。在底层,根据平台的不同,该char最终可能会被提升为int。

最新更新