变量可以通过C / C 的左或右移动操作变为null

Can a variable become null by left or right shift operation in c / c++?

本文关键字:操作 移动 null 右移 可以通过 变量      更新时间:2023-10-16

我有一个代码段,其中我将值分配给变量, var。在变量之间,在左/右移动操作上作用。这样的变量可以曾经变得无效。

请注意,null主要定义为

#define null ((void*)0)

如果不能为null,则检查以下检查:

if (var == null)

将产生永不执行的死亡代码。

内置移位运算符仅适用于积分或未指示的枚举类型的值。内置比较与您的null仅适用于 Pointer 类型的值合法。这意味着内置偏移的结果永远无法与您的null进行比较。(这里唯一的潜在漏洞是使用Shifts形成零销量常数的可能性 - 积分零。

换句话说,没有有效的上下文,甚至可以出现这个问题。您的if不会产生"死代码"或"活着的代码"。它根本不会编译。

但是,如果您谈论的是超负荷的操作员,那么一切皆有可能。但是,在这种情况下,您的问题太广泛而无法有意义。

在C中,您可以将Interger值与指针进行比较,因此代码会产生警告,但可能会按预期工作。(虽然不推荐(