diff --git a/docs/undef.md b/docs/undef.md index 4ff6a6b..ac832fb 100644 --- a/docs/undef.md +++ b/docs/undef.md @@ -327,12 +327,15 @@ using T1 = decltype(c << 1); // int --- -对于有符号整数,左移还不得破坏符号位 +C++20 前,有符号整数负值不能左移,而左移正值不能导致结果超出对应的无符号整数类型范围。 ```cpp -int i = 0; -i << 1; // 可以 -i << 31; // 错! +int i = 1; +i << 31; // 可以 +int j = 42; +j << 31; // C++20 前错! C++20 起可以 +int k = -1; +k << 0; // C++20 前错! C++20 起可以 unsigned int u = 0; u << 31; // 可以 ```