条件检查:if(x==0) 与 if(!x)

2023-11-27

有什么区别if(x==0) vs. if(!x)?或者它们总是等价的?对于不同的 C++ 内置类型x:

  • bool
  • int
  • char
  • pointer
  • iostream
  • ...

假设存在从类型到支持的类型的转换if (x) or if (!x),那么只要没有不同的转换operator int() than opterator bool(),结果将是相同的。

if (x == 0)将使用“最佳”转换,其中包括bool or void *转换器。只要有任何转换器可以将类型转换为某种“标准类型”。

if(!x)会做完全相同的事情,它将使用任何转换为​​标准类型的转换器。

当然,这两者都假设转换器函数不是 C++11“不默认转换”。

当然,如果你有这样的课程:

class
{
   int x;
  public:
   bool operator bool() { return x != 0; }
   int operator int() { return x == 0; } 
}; 

then if (x == 0)会做if ( (x == 0) == 0) and if (!x)会做if (! (x != 0),这不一样。但现在我们真的想制造麻烦,而且这是设计得非常糟糕的代码。

当然,上面的例子可能会因任何原因而出错operator int()这不会导致false for x == 0 and true对于所有其他值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

条件检查:if(x==0) 与 if(!x) 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • NumPy 读取文件并动态过滤行

    我在 CSV 文件中写入了大量数字 只需加载该数组的一部分 从概念上讲我想打电话np genfromtxt 然后对结果数组进行行切片 但是 该文件太大 RAM 可能无法容纳 相关行的数量可能很小 因此不需要解析每一行 MATLAB有函数te
  • EXTENDS 挑战:预处理器函数宏和类类 oop

    背景 我一直在使用 C 预处理器来管理和 编译 具有多个文件和构建目标的半大型 JavaScript 项目 这提供了对 C 预处理器指令的完全访问 例如 include define ifdef等来自 javascript 的内容 这是一个
  • 使用 Xcode 8 创建通用框架?

    我公司的 iOS 框架旨在在真正的 iOS 设备上运行 所述框架当前作为 Xcode 项目中的附加目标生成 该项目也生成应用程序 这使得调试框架相对容易 我们最近收到了要求让它在模拟器中也能运行的请求 我现在可以让它这样做 下一步是创建一个
  • 使用 Python MoviePY 连接视频太慢

    我正在使用 MoviePY 加入 50 多个或更多 1 2 3 分钟的视频 但它只给了我 20 个小时 尽管我有 64 GB 内存 i7 和 GTX 670 虽然不是顶级但还算合理 无论如何我可以加快这个过程吗 padding 10 pad
  • 解释 dumpsys cpuinfo

    我正在寻找 android shell 中命令 dumpsys cpuinfo 结果的解释 dumpsys cpuinfo Load 17 78 16 97 16 29 CPU usage from 35983ms to 21604ms a
  • 跨多个页面保留提供程序数据不起作用

    我在用着Provider在我的 flutter 应用程序中 当我进入新页面时 提供给Provider第 1 页的内容无法在第 2 页中访问 我所理解的方式Provider有效的一点是 有一个中心位置可以存储所有数据 并且可以在应用程序中的任
  • 低选择性色谱柱的索引和替代方案

    可用于在低选择性列上选择记录的策略范围有哪些 一个示例可能是订单表 多年来 您在其中建立了大量已完成的订单 但通常需要选择活动订单 订单可能会经历一个生命周期 例如下单 库存分配 从仓库挑选 发送给客户 开具发票和付款 订单还可能被取消 保
  • 自动化 GDB 调试会话的最佳方法是什么?

    GDB 是否有内置的脚本机制 我应该编写一个 Expect 脚本 还是有更好的解决方案 我每次都会发送相同的命令序列 并将每个命令的输出保存到一个文件中 很可能使用 GDB 的内置日志记录机制 除非有人有更好的主意 基本上 在这个例子中 我
  • SQL中什么时候需要给表名起别名?

    我注意到 在使用多个 JOIN 进行查询时 除非为其中一个表名指定一个别名 否则我的查询不起作用 这是一个简单的例子来解释这一点 This doesn t work SELECT subject from items join purcha
  • “替换不是一个函数”

    我正在尝试从数字中删除逗号 var thisbill str thisbill linebill z val if isNaN thisbill thisbill 0 00 thisbill str thisbill thisbill th
  • barh 在条之间产生不稳定的间距

    我一直在生成如下所示的条形图 请注意 由于某种原因 标签上的垂直间距不均匀 我不确定这是否与我分配刻度的方式或实际放置文本的任何机制有关 相关代码 height factor 40 0 ind np linspace 0 len sorte
  • 如何使覆盖控件高于所有其他控件?

    我需要使一个控件出现在所有其他控件之上 因此它将部分覆盖它们 如果您使用的是Canvas or Grid在您的布局中 将控件置于更高的位置ZIndex From MSDN
  • 为什么 JAX-WS 客户端在运行时访问 WSDL?

    使用 wsimport 生成 JAX WS 客户端后 wsimport keep WebService wsdl JAX WS 为何必须在运行时查找 wsdl 位置 这是一个错误吗 我发现了这篇很棒的帖子 JAX WS 客户端 访问本地 W
  • 整个一个核心专用于单个进程

    Linux 中是否有任何方法可以将一个 CPU 核心分配给特定的给定进程 并且该核心上不应调度任何其他进程或中断处理程序 我读过有关 Linux 中进程亲和力的内容使用任务集实用程序将进程绑定到 CPU但这并不能解决我的问题 因为它只是尝试
  • 我可以使用fetch来调用Notion API吗?

    我想使用 Notion 作为 SPA 的内容网关 我可以使用 fetch 中的 Notion API 吗 我正在尝试使用 fetch 来获取数据 但由于 CORS 而无法正常工作 let notion fetch import meta e
  • Microsoft Bot Framework - 机器人进入睡眠状态。有办法预防吗?

    我的基于机器人框架的机器人运行得很好 但是 当我在一段时间不活动 假设一天 后首次与机器人交互时 机器人似乎需要很长时间 大约 10 45 秒 才能发回其第一个回复 回复之后 回复时间又恢复得很好了 对我来说 后端服务似乎进入某种睡眠模式
  • 如何在不使用 setter 的情况下为类变量设置值

    我想插入一个值到Object变量而不使用设置器 如果可以的话怎么可能 这是一个例子 Class X String variableName getters and setters 现在我有一个函数 其中包含variable name the
  • FileProvider.getUriForFile 返回 NullPointerException

    我正在尝试编写我的第一个 Android 应用程序 其中涉及拍照并用它做一些事情 在查看了几个在线教程后 我整理了一些代码 但每当单击按钮时都会收到以下 NullPointerException 10 03 14 48 00 284 263
  • 如何在C89中获得SIZE_MAX

    我想得到SIZE MAX in C89 我想到了下面的方法来查找SIZE MAX const size t SIZE MAX 1 由于标准 6 2 1 2 ANSI C 规定 当有符号整数转换为相同或更大大小的无符号整数时 如果有符号整数的
  • 条件检查:if(x==0) 与 if(!x)

    有什么区别if x 0 vs if x 或者它们总是等价的 对于不同的 C 内置类型x bool int char pointer iostream 假设存在从类型到支持的类型的转换if x or if x 那么只要没有不同的转换opera