有没有一种简单的方法可以将带符号的char转换为没有符号扩展名的int?

Dan*_*ker 0 c

在C,我想一个转换signed charint,没有符号扩展.因此,如果signed char是0xFF,int那么也将是0xFF.简单地转换为int是行不通的; 结果将是0xFFFFFFFF(在32位机器上).

这似乎有效(并且已经非常简单):

int convert(signed char sc) {
    return 0xFF & (int) sc; 
}
Run Code Online (Sandbox Code Playgroud)

但是有更简单或更惯用的方式吗?

编辑:固定功能

Car*_*rum 15

你可以先铸就unsigned char.假设一个定义:

signed char c;
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

int i = (unsigned char)c;
Run Code Online (Sandbox Code Playgroud)