为什么 ++i 不 || ++j && ++k 给出期望值

2023-12-28

我想知道为什么下面代码中k的值为1。

I think ++i || ++j && ++k按照以下顺序执行:

((++i || ++j) && ++k)

所以,在第一个片段中,(++i || ++j), ++i是真的,所以++j没有被评估,所以i=2, j=1。 接下来,在第二个片段中,(true && ++k), so ++k被评估,然后k=2.

#include <stdio.h>

int main(void)
{
    int i, j, k;

    i = 1; j = 1; k = 1;
    printf("%d ", ++i || ++j && ++k);
    printf("%d %d %d\n", i, j, k);
    return 0;
}

But,

printf("%d %d %d\n", i, j, k);

shows

2 1 1

我不知道我错了什么,或者我误解了什么。


逻辑与运算符&&优先级高于逻辑 OR 运算符||。所以表达式实际上被解析为:

++i || (++j && ++k)

++i计算结果为 true,因此整个右侧||, i.e. ++j && ++k,不予评价。这导致两者都没有j nor k正在递增。

对于您自己和阅读您代码的其他人来说,记住所有优先级规则可能很困难。因此,当有疑问时,请使用括号来阐明您的意图。

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

为什么 ++i 不 || ++j && ++k 给出期望值 的相关文章

  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 按成员序列化

    我已经实现了template
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • Visual Studio 2015 和 TFS - 所有排除的更改都会自动包含回来

    我在 Visual Studio 2013 中使用 TFS 效果很好 我最近切换到 VS 2015 但遇到了一个烦人的问题 bug 我有一堆排除的待定更改 我不想提交 但我想保留在本地 糟糕的开发环境 不要问 我的问题是 每次我重新打开 V
  • 将 numpy 数组作为列添加到 Pandas 数据框中

    我有一个形状 X Y 的 Pandas 数据框对象 如下所示 1 2 3 4 5 6 7 8 9 和形状 X Z 的 numpy 稀疏矩阵 CSC 看起来像这样 0 1 0 0 0 1 1 0 0 如何将矩阵中的内容添加到新命名列中的数据框
  • Maven - Nexus:查找依赖项目

    Nexus 中有没有办法找到依赖于特定依赖项的所有项目 我们的 Nexus 存储库中有一个项目列表 我们需要找到所有使用特定依赖项的项目 The Artifact 使用 Nexus 插件 https github com saleemsha
  • COUNT(*) 与 LEFT JOIN 和 GROUP BY 在 MySQL 中包含 NULL

    我正在尝试从表中获取结果 包括外部表中的出现计数 该表可以有 0 次或多次出现 就像下面的例子一样 表 颜色 id name 1 red 2 blue 3 yellow 4 green 表 水果 name color id apple 1
  • Python:为 __init__ 扩展 int 和 MRO

    在Python中 我试图扩展内置的 int 类型 这样做时 我想将一些关键字参数传递给构造函数 所以我这样做 class C int def init self val kwargs super C self init val Do som
  • 有没有我可以使用的文件选择器。我尝试了一些,但它们不起作用

    我尝试了几个文件选择器 但它们不起作用 请向我推荐一个带有示例代码的文件选择器 使用 file picker 包 也许 不工作你在android清单中写入权限
  • LINQ where 子句中的 async/await 不起作用

    我试图在 LINQ 语句中进行异步数据库查询 但遇到错误 下面的代码在没有 async await 的情况下运行良好 var newEntities repositoryMapping Mapper Map
  • 不同函子的容器

    我正在尝试找出一种方法来拥有函子容器 以便我可以将值传递给函子并对其进行修改 但是我无法让函子不受可以传递的类型和他们可以接受的论据数量 我对此的实际用途是我有一系列函子 它们都根据输入以某种方式更改 3D 向量 通过能够将这些函子存储在容
  • mkdir 的“-p”选项

    所以这似乎不是一个非常复杂的问题 但我找不到答案 我很困惑什么 p选项在 Unix 中起作用 我将它用于实验室作业 同时创建一个子目录 然后在该子目录中创建另一个子目录 它看起来像这样 mkdir p cmps012m lab1 这是一个具
  • 如何使用 Entity Framework 4.1“仅代码”流畅 API 映射 char 属性?

    我有一个具有 char 属性的对象 public class Product public char Code get set 实体框架似乎无法映射字符 当我从模型对象创建数据库架构时 数据库中缺少该字段 无论如何 我可以使用 Fluent
  • 在 Angular 5 上对 http 服务进行单元测试

    我对如何测试数据服务感到非常困惑 可能性太多 而且令人不知所措 我有这个简单的服务 Injectable export class DataService constructor private http HttpClient getDat
  • 量角器期望元素最终出现

    有没有办法期望元素最终出现在页面上 例如一种方式 browser wait protractor ExpectedConditions presenceOf element by partialLinkText Continue 1000
  • 使用 ResXResourceReader 时如何判断资源是嵌入文件还是嵌入字符串

    我有一个单独的应用程序 用于拼写检查我的 resx 文件 作为预构建事件运行 但是 如果 resx 文件包含文本文件 例如 xml 我的应用程序将加载该文件并尝试对其进行拼写检查 这并不是我真正想要它做的 有没有办法从 ResXResour
  • apt-get 错误:找不到“docker-ce”的版本“5:19.03.4~3-0~ubuntu-bionic”

    文档 https docs docker com install linux docker ce ubuntu 提供安装特定版本的语法docker ce sudo apt get install docker ce
  • 在 Linux 上为 Qt 应用程序获取 root 访问权限的正确方法

    Good day 背景 我正在为 Linux 系统创建一个 OpenVPN 包装应用程序 该应用程序已接近完成 我遇到了一个小障碍 OpenVPN 需要 root 访问权限才能修改路由表 添加和删除路由 这就是事情变得有点模糊和混乱的地方
  • Java语法解释-getMenuInflater()

    刚刚下载了 android studio 我正在使用大书呆子牧场 Android 编程指南来学习诀窍 当您启动 android studio 时 此代码已经在主活动文件中 Override public boolean onCreateOp
  • React 状态变量值显示为 null

    我正在尝试访问状态变量的值 但当我更改日期时它似乎为空 但如果我更改任何其他输入字段 我不会将其变为空 这里是link https stackblitz com edit react 6wbchf file src 2FApp js到 st
  • 如何在 J2ME 中分割字符串?

    如何在 J2ME 中有效地分割字符串 有一个StringTokenizer http download oracle com javase 1 4 2 docs api java util StringTokenizer html or S
  • 将 const char 转换为数组

    我正在尝试将 const char 转换为 char 这是我的代码 bool check const char word char temp 1 50 temp word return true 它是一个传入 const char 的函数
  • 为什么 ++i 不 || ++j && ++k 给出期望值

    我想知道为什么下面代码中k的值为1 I think i j k按照以下顺序执行 i j k 所以 在第一个片段中 i j i是真的 所以 j没有被评估 所以i 2 j 1 接下来 在第二个片段中 true k so k被评估 然后k 2 i