相关疑难解决方法(0)

"int"和"unsigned int"之间的真正区别

int:

32位int数据类型可以包含-2,147,483,648到2,147,483,647范围内的整数值.您也可以将此数据类型称为signed int或signed.

unsigned int:

32位无符号int数据类型可以包含0到4,294,967,295范围内的整数值.您也可以将此数据类型简称为无符号.

好的,但是,在实践中:

int x = 0xFFFFFFFF;
unsigned int y = 0xFFFFFFFF;
printf("%d, %d, %u, %u", x, y, x, y);
// -1, -1, 4294967295, 4294967295
Run Code Online (Sandbox Code Playgroud)

没有区别,噢我有点困惑.

c

51
推荐指数
6
解决办法
23万
查看次数

为什么len()返回一个有符号的值?

Go的内置len()函数返回一个签名int.为什么不是uint用来代替?

是否有可能len()返回负面的东西?
据我所知,答案是否定的:

  • 数组:"元素的数量称为长度,永远不会消极."
  • 切片:"任何时候以下关系都成立:0 <= len(s) <= cap(s)"
  • 地图 "地图元素的数量称为其长度".(我在规范中找不到任何明确地将其限制为非负值的内容,但我很难理解地图中的元素少于0个)
  • 字符串 "字符串值是一个(可能是空的)字节序列....字符串s的长度(以字节为单位的大小)可以使用内置函数发现len()"(同样,很难看出序列如何有一个负数字节)
  • 通道 "在通道缓冲区中排队的元素数量(同上)

signed go

15
推荐指数
3
解决办法
2739
查看次数

标签 统计

c ×1

go ×1

signed ×1