From d4c729403822eaa0d67ac4fcfc71926a328fcac1 Mon Sep 17 00:00:00 2001 From: "A. Jiang" Date: Tue, 31 Dec 2024 17:27:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=AD=A3=E6=9C=89=E7=AC=A6=E5=8F=B7?= =?UTF-8?q?=E6=95=B4=E6=95=B0=E5=B7=A6=E7=A7=BB=E7=9A=84=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=9C=AA=E5=AE=9A=E4=B9=89=E8=A1=8C=E4=B8=BA=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/undef.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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; // 可以 ```