变量可以通过C / C 的左或右移动操作变为null
Can a variable become null by left or right shift operation in c / c++?
我有一个代码段,其中我将值分配给变量, var
。在变量之间,在左/右移动操作上作用。这样的变量可以曾经变得无效。
请注意,null主要定义为
#define null ((void*)0)
如果不能为null,则检查以下检查:
if (var == null)
将产生永不执行的死亡代码。
内置移位运算符仅适用于积分或未指示的枚举类型的值。内置比较与您的null
仅适用于 Pointer 类型的值合法。这意味着内置偏移的结果永远无法与您的null
进行比较。(这里唯一的潜在漏洞是使用Shifts形成零销量常数的可能性 - 积分零。
换句话说,没有有效的上下文,甚至可以出现这个问题。您的if
不会产生"死代码"或"活着的代码"。它根本不会编译。
但是,如果您谈论的是超负荷的操作员,那么一切皆有可能。但是,在这种情况下,您的问题太广泛而无法有意义。
在C中,您可以将Interger值与指针进行比较,因此代码会产生警告,但可能会按预期工作。(虽然不推荐(
相关文章:
- 复制和交换习惯用法与移动操作之间的交互
- 隐式移动与复制操作和遏制
- 我什么时候会默认(而不是删除)基类中的复制和移动操作
- 这将执行默认移动操作吗?
- 如何对移动操作进行单元测试(默认)?
- 我是否缺少<实验/文件系统>移动操作?
- 在理解移动语义的同时混淆 c++ 程序中的操作
- 我的移动分配操作程序重载的分段错误
- 是否有可能具有放入容器的移动操作的类型?
- 发送到另一个窗口的鼠标移动消息不执行任何操作
- 我什么时候需要移动操作,c++
- 在'string=string+s1'和"string+=s1"之间移动语义可以保存多少个复制操作?
- 变量可以通过C / C 的左或右移动操作变为null
- 标准::atomic_应该如何...<std::shared_ptr>用于线程安全类的复制和移动操作?
- 命令模式:如何进行连续操作?(例如,移动对象)
- 为什么C++允许您移动包含已删除移动操作的对象的类
- "pair::operator=(pair&&)"错误,"auto&"推断出移动操作 - libstdc++ 回归?
- 移动对象后支持哪些操作?
- 具有可以引发的移动操作的仅移动类的示例是什么?
- Visual Studio 2012 是否正确执行此操作?标准::移动