小编Lui*_*ola的帖子

无符号字符在函数调用中自动提升为int,为什么?

为什么在调用函数时会unsigned char自动提升为int?在下面的示例中,有一个f(int)和一个f(char)函数.似乎更合乎逻辑的是编译器会强制unsigned chara char和a 的参数,f(char)因为它们具有相同的位数.它正在调用f(int),即使这意味着将参数提升为具有更多位的类型.指向规则定义的指针?标准或编译器/平台特定?

#include <iostream>

void f( int key )
{
    std::cout << __PRETTY_FUNCTION__ << std::endl;
}

void f( char key )
{
    std::cout << __PRETTY_FUNCTION__ << std::endl;
}

int main( int argc, char* argv[] )
{
    int a = 'a';
    char b = 'b';
    unsigned char c = 'c';

    f(a);
    f(b);
    f(c);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

生成此输出:

void f(int)
void f(char)
void f(int)
Run Code Online (Sandbox Code Playgroud)

c++

13
推荐指数
2
解决办法
1747
查看次数

如何在Lua中从整数移位和屏蔽位?

我正在将一个 Objective-C iOS 应用程序移植到使用 Lua 的 CoronaSDK。我有一个带符号的16 位整数,我想隔离其中的高字节和低字节。在 C 中,您可以简单地执行以下操作:

uint8_t a = (dx >> 8) & 0xff;
uint8_t b = dx & 0xff;
Run Code Online (Sandbox Code Playgroud)

Lua 没有按位运算符。我怎样才能在 Lua 中做到这一点?这是用于扩展 Lua 的移动应用程序和外部二进制库,如果有的话,很可能无法在所有设备上运行。您可以建议针对此问题的任何纯 Lua 解决方案吗?

lua coronasdk

0
推荐指数
1
解决办法
5669
查看次数

标签 统计

c++ ×1

coronasdk ×1

lua ×1