为什么在比较时将常量放在变量之前?

2024-04-16

我注意到我们的一些代码中存在以下语法有一段时间了:

if( NULL == var){
   //...
}

or

if( 0 == var){
  //...
}

和类似的事情。

有人可以解释一下为什么写这个的人选择这个符号而不是常见的符号var == 0 way)?

这是风格问题,还是以某种方式影响性能?


这是一种避免此类错误的机制:

if ( var = NULL ) {
  // ...
}

如果您将变量名写在右侧,编译器将能够捕获某些错误:

if ( NULL = var ) {  // not legal, won't compile
  // ...
}

当然,如果变量名出现在等号两侧,那么这将不起作用,并且有些人觉得这种样式没有吸引力。

Edit:

正如埃文在评论中提到的,如果您启用警告,任何像样的编译器都会警告您,例如,gcc -Wall将为您提供以下信息:

warning: suggest parentheses around assignment used as truth value

您应该始终在编译器上启用警告,这是查找错误的最便宜的方法。

最后,正如 Mike B 指出的那样,这是一个风格问题,不会影响程序的性能。

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

为什么在比较时将常量放在变量之前? 的相关文章

  • 如何在 C# 中导航任何 JSON 树?

    我需要像导航 XML 一样导航 Json 结构XmlDocument 结构未知 我需要迭代节点来解析一些数据 这可能吗 我知道我可以使用JavaScriptSerializer将其反序列化为已知类型 但事实并非如此 因为我可以接收任何有效的
  • 在 C++ 中将惰性生成器实现为forward_iterator

    MyGenerator 表示 可能 有限的整数序列 计算成本很高 所以我不想预先生成它们并将它们放入容器中 struct MyGenerator bool HasNext int Next 要打印全部 MyGenerator generat
  • 在执行方法的括号内声明变量

    默认情况下 变量在方法执行之前定义 例如 DateTime myDate if DateTime TryParse date out myDate 我们可以实现内联声明 并且该变量可以在外部使用 例如 if DateTime TryPars
  • 使用 C# 的服务 SACL ||使用 C# 获取具有 ACCESS_SYSTEM_SECURITY 权限的服务的句柄

    有人知道如何使用 C 获取远程服务上的 SACL 吗 我尝试了很多不同的方法 但基本上没有什么效果 我可以在本地计算机上获取 DACL 和 SACL 但在远程计算机上获取其中任何一个似乎都不可能 我所做的是创建一个名为ServiceSecu
  • 硬币数量有限的最小硬币找零问题

    具体来说 问题是 给定面值数组coins 每个硬币的限制数组limits 和数量amount 返回minimum需要的硬币数量 以获得amount 或者如果不可能返回 null 另外填充数组change解决方案中使用的每个硬币的数量 这是我
  • 了解带有位移位的右移运算符

    我很难理解右移运算符 我理解左移 假设我们没有 int n 11 which is 1011 现在如果我们左移它n lt lt 1结果是 int a n lt lt 1 so a 10110 simply add a 0 to the en
  • C#中私有类的概念

    除了内部类之外 C 中是否可以存在私有类 根本不 除非它在嵌套类中 否则什么都没有 未嵌套在其他类或结构中的类和结构可以是public or internal 声明为 public 的类型可由任何其他类型访问 声明为内部的类型只能由同一程序
  • bet365 网站上 Selenium 的 Chrome 驱动程序陷入灰屏

    当我尝试使用 Chrome 驱动程序和 Selenium 打开 bet365 网站时出现灰屏 var driver new ChromeDriver driver Navigate GoToUrl https www bet365 it 我
  • Unity构建错误

    所以我制作了我的游戏并尝试构建它 我收到一些对我来说毫无意义的错误 这是错误 UnityEditor BuildPlayerWindow BuildMethodException 2 个错误 在 UnityEditor BuildPlaye
  • C++ static constexpr 成员在类外重新声明

    对于以下代码 为什么 main 中的第一个案例无需重新声明 Foo bar 就可以正常工作 而带有该函数的第二个案例则需要它 struct Foo static constexpr int bar 30 Declaration of Foo
  • 自定义 web.config 部分处理程序

    我之前设计过一个自定义部分处理程序 但我遇到了一个我似乎无法想到的问题 我有一个像这样的配置部分
  • 来自指针的 Typedef const 引用[重复]

    这个问题在这里已经有答案了 可能的重复 为什么允许将指针强制转换为引用 https stackoverflow com questions 5924248 why is it allowed to cast a pointer to a r
  • C++ 支持“finally”块吗? (我经常听到的“RAII”是什么?)

    C 是否支持 finally http java sun com docs books tutorial essential exceptions finally html 块 是什么RAII 习语 http en wikipedia or
  • C# Windows 应用程序中的文件上传

    在我的 C Windows 应用程序中 我想上传 pdf 文件 但在我的工具箱中找不到 FileUpload 控件 我如何在 C Windows 应用程序中上传 pdf 文件 regards 将 OpenFileDialog 控件放在窗体上
  • 如何将 Ctrl+,(control 加逗号)指定为 WPF 菜单项的键盘快捷键?

    Question I would like to assign the keyboard shortcut Ctrl control plus comma to the Preferences menu item How do I do t
  • ‘+= new EventHandler’和‘-= new EventHandler(anEvent)’之间的区别

    我看到一些代码使用 新的事件处理程序 anEvent 你能告诉我有什么不同吗 新的事件处理程序 Thanks 一个将委托添加到订阅者集合中 另一个将其删除 例如 如果您之前订阅了某个事件 但您希望在关闭表单时删除引用 则可以使用 版本 您将
  • 如何在 XAML 中自动调整列表视图的高度

    我的列表视图对象接收图像 ID 号和概要 概要的大小各不相同 因为有些有空格返回 我注意到 ListView 有一个可以设置的行高 我现在设置为 250 但它只能是一个固定值 那么会发生什么 我的网格对于 ListView 来说变得太大 导
  • 判断一个点是否在多面体内部

    我试图确定某个特定点是否位于多面体内部 在我当前的实现中 我正在研究的方法采用我们正在寻找多面体面的数组 在本例中为三角形 但稍后可能是其他多边形 的点 我一直在尝试根据这里找到的信息进行工作 http softsurfer com Arc
  • 非通用接口是通用接口的同义词

    我在 C 中有一个通用接口 并且几乎总是将它与其中一种类型一起使用 我想为该类型创建一个非通用接口并使用它 假设我有以下代码 public interface IMyGenericList
  • 列出所有会话信息

    我想在页面中显示我的asp net页面 aspx 的所有会话信息 我怎样才能做到这一点 编程语言是C 这两种方法对我有用 稍微改进和纠正了大卫的答案 第一种方法 for int i 0 i lt Session Count i var cr

随机推荐

  • 为什么我无法加载 Nokogiri?

    我通过运行以下命令安装了 Nokogiri 没有任何问题 sudo gem install nokogiri Building native extensions This could take a while Successfully i
  • 如何通过 JSch java api 执行 linux 命令“dzdo su - john”并在该用户上执行一些命令,例如“ls -ltr”

    我想使用 java jsch 库连接到远程 Linux 服务器 并使用命令 dzdo su john 切换到另一个用户 并且我想对该用户执行一些命令 我已经尝试了几种方法来满足这一要求 但我无法做到这一点 任何人都可以提供帮助 public
  • OUTPUT INTO 子句中可以使用哪些列?

    我正在尝试构建一个映射表 将表中新行的 ID 与从中复制的行关联起来 OUTPUT INTO 子句似乎对此很完美 但它的行为似乎并不符合文档 My code DECLARE Missing TABLE SrcContentID INT PR
  • 如何检查淘汰赛中的包含

    我正在使用淘汰赛 我有一个 html 页面 我想在其中检查具有某些值的字符串 就像我有一个字符串 A B C D F G H I 一样 我只想用剔除 if 检查 html 中的这个字符串 模型 var viewModel function
  • Spark SQL 广播哈希连接

    我正在尝试使用 SparkSQL 对数据帧执行广播哈希连接记录在这里 https spark apache org docs latest sql performance tuning html join strategy hints fo
  • 使用参考访问地图[重复]

    这个问题在这里已经有答案了 我尝试循环遍历地图 将其作为指向函数的指针传递 但我找不到访问元素的方法 这是代码 func refreshSession sessions map string Session now time Now for
  • Gradle 任务未显示在 Android Studio 4.2 的 gradle 工具窗口中

    我刚刚将 Android Studio 更新到版本 4 2 我很惊讶在我的项目中没有看到 Gradle 任务 在之前的版本 4 1 3 中 我可以看到如下所示的任务 但现在我只看到4 2版本中的依赖项 我尝试清除 Android Studi
  • 通过phpmailer批量发送邮件

    我正在使用 phpmailer 向我的订阅者发送批量电子邮件 但我面临一个可怕的问题 即当我向订阅者发送电子邮件时 每个订阅者都会多次收到相同的电子邮件 有些人获得了 4 次 有些人获得了 14 次 我正在通过 Mysql 表获取 flag
  • 如何确定用户在 JavaScript 中运行的是哪个版本的 IE?

    在一些现有代码中 有一个测试 通过检查对象 Browser Engine trident 是否已定义并返回 true 来查看用户是否正在运行 IE 但如何确定用户运行的是 IE6 或更早版本 还是 IE7 或更早版本 JavaScript
  • 如何在 MaterialButton 或 RaisingButton 上应用主题?

    有人可以帮助指出我们如何定义按钮的基本主题并在每个按钮上使用它吗 我到处寻找才发现textTheme但不是buttonTheme例子 Even on buttonTheme我们如何定义文本颜色 因为在按钮本身上我们可以直接这样做color
  • ASP.Net Core 从另一个控制器调用一个控制器

    在我的 ASP Net Core MVC 6 解决方案中 我有两组控制器 一组包含具有常规视图的网页 另一组包含 API 控制器 为了避免重复数据库逻辑 Web 控制器使用 API 控制器 目前 我正在通过将 DbContext 作为构造函
  • jQuery:多次淡入淡出div

    我在页面顶部有一个 div 我想淡入和淡出 3 次 我已经找到了一个问题 答案 它展示了如何通过将淡入淡出效果放入调用自身的函数中来进行无限循环淡入淡出 但我想知道指定有限数量的淡入淡出周期的最佳方法是什么 到目前为止 这就是我所拥有的 从
  • 资源调度问题

    我正在开发一个摩托车租赁网站 我遇到的问题是如何高效地解决为客人分配摩托车的问题 我知道如何以 愚蠢 的方式做到这一点 但我想知道是否有一种经典算法可以解决此类问题 这与将客人分配到酒店房间是同样的问题 在最后一个示例中 目标是通过不因调度
  • UIActionSheet 着色

    有人知道如何在 uikit 中为 uiactionsheet 着色吗 是的 因为它是一个 UIView 如 kmit 所描述的 您可以使用以下命令 addSubview 因此您可以添加自己的背景并使用 sendSubviewToBack 将
  • 在 JavaScript 中将字符串数组拆分为浮点数数组

    我正在尝试拆分一个称为 顶点 的字符串数组 并将其存储为浮点数组 目前字符串数组包含三个元素 0 1 0 1 1 0 1 1 0 我需要的是一个包含所有这些数字作为单独元素的浮点数组 0 1 0 1 1 0 1 1 0 我使用 split
  • 如何使用键盘快捷键打开弹出窗口? [复制]

    这个问题在这里已经有答案了 可能的重复 jQuery 的键盘快捷键 https stackoverflow com questions 593602 keyboard shortcuts with jquery 我想使用快捷键显示弹出窗口
  • 如何将自定义目标文件与 Haskell 库链接?

    我创建了一个 Haskell 包 它对 CUDA 代码中定义的函数进行 FFI 调用 我想在包构建期间将 cu 文件编译为对象 o 文件 并强制链接器将其链接 到目前为止 我尝试使用一种发现的技术这个问题 https stackoverfl
  • 使用plotly r 的多折线图

    我有一个数据框 我试图使用plotly作为多折线图来绘制它 下面是数据框的样子 Month considered pct x pct y pct
  • 如何阻止 VSCode 自动格式化删除括号内的空格?

    例如 当我写 foo bar 它将被格式化为 foo bar 我怎样才能让它保留2个空格 Edit 这是一个不同的问题如何更改 Visual Studio Code 中的缩进 https stackoverflow com question
  • 为什么在比较时将常量放在变量之前?

    我注意到我们的一些代码中存在以下语法有一段时间了 if NULL var or if 0 var 和类似的事情 有人可以解释一下为什么写这个的人选择这个符号而不是常见的符号var 0 way 这是风格问题 还是以某种方式影响性能 这是一种避