对于这么一段代码,在x86 Ubuntu,和ARM Android下得到不同的输出

char getRank(){
    int value = -1;
    return value;
}

int main(int argc, char* argv[]){

int rank = getRank();

printf(“rank = %dn”, rank);

return 0;

}

  1. x86 Ubuntu
    rank = –1;
  2. ARM Android
    rank = 255

怎么回事呢?

int rank = getRank();   //注意这行代码,getRank()返回char,将char付给int型变量rank,所以这里有个类型提升的问题;从结果来看,两种os对于这种情况处理不一样,x86 Ubuntu是有符号提升,而Arm Android是无符号提升

Advertisements