将'int'强制转换为'size_t'

Mav*_*nav 0 c++ int casting size-t

size_t和int之间的区别是有据可查的,我概括了一下:前者是某些无符号整数类型的别名,它是依赖于实现的,而后者是有符号的; 前者适用于内存声明,而后者适用于算术运算.

我的问题是,如果我做一些算术计算来给int(它永远不会太大而且总是正的)并将它分配给size_t变量(用于访问数组位置),是否存在任何可能出现问题的情况出现?

Mar*_*k B 5

将签名类型分配给无符号类型始终是明确定义的(即使对于负值).如果有符号变量不大于无符号类型,并且只有非负数,则该值在此类转换中不会更改.