(size_t)-1和〜0有什么区别?

JL2*_*210 6 c unsigned ones-complement

我已经看过这两者,(size_t)-1~0曾经代表大数字,或者数字都被翻转过。

两者之间有什么区别吗?如果是这样,那是什么?

我发现了一个问题:-1和〜0之间有什么区别,但是它没有回答我的问题,因为我正在处理无符号整数(例如size_t),而不是有符号整数(例如int)。

chu*_*ica 6

(size_t)-1和〜0有什么区别?

类型和值不同。

(size_t)-1与的值相同,SIZE_MAX并且类型为size_t

~0通常为-1,类型为int


将这两个都分配给size_t 会导致SIZE_MAX

size_t a = (size_t)-1; 
size_t b = ~0;
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,-1将其分配给a b并首先进行转换,将-1环绕为最大值size_t