在 if 语句中分配和测试变量的最合适方法是什么?

2023-11-21

以下哪一种是首选的做事方式,为什么?是否有任何具体情况会产生任何影响,假设函数 bar() 在任何时候都不取零值?

案例1:测试两个条件的真值

if ((foo = bar()) && foo < 0)
    error();

情况 2:仅测试分配的变量

if ((foo = bar()) < 0)
    error();

首选方法是将它们分开:

foo = bar();
if (foo < 0)
    error(); 

编辑:这是提高可读性和避免错误的更好方法,例如在第一种情况下:

if (foo = bar() && foo < 0)
    error();

那大概应该是:

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

在 if 语句中分配和测试变量的最合适方法是什么? 的相关文章

  • boost::asio + std::future - 关闭套接字后访问冲突

    我正在编写一个简单的 TCP 客户端来发送和接收单行文本 异步操作由 std future 处理 以便于超时阻塞查询 不幸的是 我的测试应用程序在破坏服务器对象时因访问冲突而崩溃 这是我的代码 TCP客户端 hpp ifndef TCPCL
  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • 如何减少 Visual Studio 2015 中 Xamarin Forms 应用程序的用户代码大小?

    我今天在 Windows 7 上安装了 Visual Studio 2015 RTM 并在 Xamarin 上注册了一个新帐户 入门许可证 创建项目后 我尝试运行该应用程序 之前创建的 AVD 我得到的只是这个错误 mandroid 错误
  • 在 werkzeug 请求中检索 url 锚点

    我有一个 DAV 协议 可以在 url 锚点中存储带外数据 例如这ghi in DELETE abc def ghi 服务器是 Flask 应用程序 我可以看到请求通过网络传入tcpdump 但是当我查看 werkzeug Request
  • 如何使用Spark的repartitionAndSortWithinPartitions?

    我正在尝试构建一个最小的工作示例repartitionAndSortWithinPartitions以便理解该函数 到目前为止我已经完成了 不起作用 不同的值会乱七八糟地乱七八糟 def partval partID Int iter It
  • Python:使用相对路径导入excel文件

    我尝试导入一个与脚本不在同一文件夹中的 Excel 文件 我需要获取上面的一个文件夹 然后进入另一个文件夹 B folder 并且有文件 2 file xlsx I tried df pd read excel r B folder 2 f
  • 如何在Java小程序中正确指定代码库和存档?

    我使用 Firefox 版本 gt 3 5 3 5 3 6 4 我尝试指定archive and codebase属性正确但不起作用 我的小程序主类位于archive运行时加载的一些必要的类位于codebase 如果我只指定archive然
  • SDL_GetTicks() 精度低于毫秒级

    我目前使用 SDL2 进行编程 一切正常 但我有一个问题SDL GetTicks 方法 通常它应该返回以毫秒为单位的总应用时间 但大多数时候它总是返回值 0 有时返回值 1 我用以下命令初始化了 SDLSDL INIT EVERYTHING
  • 使用 Eclipse CDT 构建多模块 C 项目(即解决方案)

    我将从 Netbeans 迁移到 Eclipse 在 Ubuntu 12 0 4 上 我有一个 C 应用程序 它由几个子项目组成 这些子项目是库 共享和静态 以及独立的可执行文件 我不知道如何创建 父 项目foo 其中包含组件项目 foob
  • 使用 Retrofit 转换 json 数组?

    这是我的 Json nata center id 67 nata center name Primo Institute of Design nata center id 68 nata center name Sai Ganesh Ins
  • php 中的 header 是如何工作的?

    浏览 php net 网站 它有一个标头示例 它说会给我错误 我复制了它 并在 WAMP 上执行 但它没有显示任何错误 但确实重定向到该站点 只是想知道 它在我的 WAMP 上是否是正确的行为 或者它是一个错误 或者我是否在 php ini
  • 检索项目的父级时出错:升级到 AppCompat v23 后找不到与给定名称匹配的资源

    我一直使用 Eclipse 编写 Android 程序 并决定开始迁移到安卓工作室 我决定使用与 Eclipse 相同的 SDK 然后 开始了一个新项目 设置最低 SDK 4 0 API 级别 14 选择空白活动选项 活动名称和布局名称使用
  • 如何使 DACPAC 只更新一种架构?

    我有一个带有 sqlproj 项目的 VS2013 解决方案 其中包含特定于该解决方案的对象 问题是这对于其他项目来说也是常见的数据库 我的问题是自动将模式中的更改部署到数据库而不影响其他对象 默认情况下 DACPAC 会更新整个数据库 这
  • 如何在 Flex/bison 中实现 If 语句

    我没有收到错误消息 请您帮帮我 这是 l 和 y 文件 谢谢 include ifanw tab h extern int yylval return EQ return NE lt return LT lt return LE gt re
  • React Native - 禁用“屏幕尺寸”设置

    我目前正在开发一个 React Native 应用程序 我们的一些用户可能有轻微的视力问题 我们希望阻止在 Android 中设置 显示大小 因为这会使我们的应用程序无法使用 我们使用简单的代码行解决了字体大小的问题 Text defaul
  • 从多于一列的 pandas 数据帧构建 networkx 有向图或流程图

    我有 pandas 数据框 由 10 列组成 每行包含用户在线执行的一个步骤 总共 10 列 因此所有 10 个步骤过程 假设第一个活动是预订机票 那么步骤是 登录网站 gt 给出出发时间 gt 选择座位 gt 付款 审核 所以每一步都可能
  • 覆盖 auto_now 进行单元测试

    我已将数据库中的事件的一些时间戳定义为auto now add 因为信息应在存储事件的同时与其时间戳一起存储 事件的描述是这样的 class NewEvent models Model Individual event name model
  • 什么更快?在 PHP 中包含另一个文件或查询 MySQL 数据库?

    在 PHP 中 速度更快 使用include somefile php 或者使用简单的查询 MySQL 数据库SELECT查询得到相同的信息 例如 假设您有一个 JavaScript 自动完成搜索字段 需要 3 000 个术语进行匹配 使用
  • 如何在Android上绘制两个地理点之间的路线

    我在 MapView 上有两个 OverlayItem 如何绘制两个地理点之间的路线 该应用程序包含源代码 它将解决您的问题 http www anddev org the friend finder mapactivity using g
  • 如何将 Spring @Autowired 所需属性设置为 false 进行测试?

    到目前为止 我一直在使用 Required 注释来确保 Spring 配置的应用程序中的 DI Bean 要启用注释 您需要在配置中声明一个RequiredAnnotationBeanPostProcessor bean 在你的测试配置中
  • 规避 SCHEME 中的 EVAL

    彼得 诺维格 Peter Norvig 在 PAIP 中说道 在现代 lisps 中 eval 很少被使用 事实上 在Scheme 中有 根本没有评估 如果您发现自己使用 eval 那么您可能是 做错事 有哪些方法可以规避使用eval在计划
  • 在 if 语句中分配和测试变量的最合适方法是什么?

    以下哪一种是首选的做事方式 为什么 是否有任何具体情况会产生任何影响 假设函数 bar 在任何时候都不取零值 案例1 测试两个条件的真值 if foo bar foo lt 0 error 情况 2 仅测试分配的变量 if foo bar