首页 > 解决方案 > 在不指定类型的情况下转换为无符号

问题描述

#include <stdio.h>

int main(){
  ssize_t a= -1;
  size_t b = (unsigned)a;
  return 0;
}

a是 8 字节全部设置为1,但是在没有做适当的情况下b转换为 4 字节数,这是为什么呢?为什么它不变成一个 8 字节的无符号变量?unsigned(unsigned size_t)

标签: ccastingunsignedsize-t

解决方案


unsigned是写作的缩写unsigned int,所以unsignedunsigned int是同一类型。

unsigned size_t不存在; size_t已经没有签名了。

为什么它不变成一个 8 字节的无符号变量?

因为ints 通常是 32 位或 4 字节。

如果你想要固定宽度的整数,你可以使用stdint.hwhich defineduint32_tint32_t


推荐阅读