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

金在宇

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

我认为++i || ++j && ++k是按照命令执行的:

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

所以,在第一个片段,(++i || ++j)++i是真实的,所以++j不计算,所以i=2j=1接着,在第二个片段,(true && ++k),所以++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;
}

但,

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

表演

2 1 1

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

dbush

逻辑AND运算符的&&优先级高于逻辑OR运算符||因此,该表达式实际上被解析为:

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

++i计算结果为true这样的整个右侧||,即++j && ++k,不进行评估。这既j不会k增加不会增加。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么“ decltype(i + j)”的结果不是右值引用?

来自分类Dev

为什么 j 的值为 11?

来自分类Dev

为什么第二个for循环中的值分配j = i +1无法正常工作

来自分类常见问题

为什么(x – y <= j – k – 1)评估为FALSE?

来自分类Dev

j = *x; x = &j; (*x) = 3; 为什么这会改变 c 中 j 的值

来自分类Dev

计算lcm(i,j),i和j之和的范围是1到k的最有效方法是什么?

来自分类Dev

i == j == k的意外结果?

来自分类Dev

为什么int(* j)[2] = my_array给出警告?

来自分类Dev

(arr [i]-arr [j])的最大值,其中i <j

来自分类Dev

当我水平滚动时,为什么铬输入“ j”和“ k”字符?

来自分类Dev

为什么j的值在“ j = 2 * 3/4 + 2.0 / 5 + 8/5;”中 设置为2而不是3?

来自分类Dev

为什么j8583 Configparser失败,并且模板字段没有默认值?

来自分类Dev

如何在Numpy / Theano中表达c [i,j,k] = a [i,j] * b [i,k]?

来自分类Dev

从循环索引k获得i <j?

来自分类Dev

找出所有整数i,j,k> = 0,使得i + j + k <= d?

来自分类Dev

查找所有这样的不同元组(i,j,k)的计数,其中(i * j)%k == 0

来自分类Dev

计算数组中 a[i] < a[j] > a[k] 的数量的有效算法,其中 i < j < k

来自分类Dev

性能最高的方法,用于计算lcm(i,j),i和j的和,范围从1到k

来自分类Dev

查询数组索引范围i,j中范围A [i],A [j]中的值

来自分类Dev

检查数组中所有i <j <k的a [k] <a [i] <a [j]的三元组数量的最佳方法

来自分类Dev

检查数组中所有i <j <k的a [k] <a [i] <a [j]的三元组数量的最佳方法

来自分类Dev

循环中忽略 i 和 j 的相同值

来自分类Dev

对于JVM字段描述符,为什么将Z用于布尔值,将L用于类的实例,将J长期使用?

来自分类Dev

存储重新计算 N 次到二维范围 (N,i*j) 的二维范围 (i,j) 的值

来自分类Dev

查找最大索引j的有效算法,使得索引i至j的总和小于k

来自分类Dev

什么-j4值用于调用make?

来自分类Dev

J2ME中getMajorDeviceClass的int值是什么?

来自分类Dev

生成范围(i,j)之间的核苷酸k-mers的所有组合

来自分类Dev

多个嵌套的for循环仅在R中的i = j = k索引下迭代

Related 相关文章

  1. 1

    为什么“ decltype(i + j)”的结果不是右值引用?

  2. 2

    为什么 j 的值为 11?

  3. 3

    为什么第二个for循环中的值分配j = i +1无法正常工作

  4. 4

    为什么(x – y <= j – k – 1)评估为FALSE?

  5. 5

    j = *x; x = &j; (*x) = 3; 为什么这会改变 c 中 j 的值

  6. 6

    计算lcm(i,j),i和j之和的范围是1到k的最有效方法是什么?

  7. 7

    i == j == k的意外结果?

  8. 8

    为什么int(* j)[2] = my_array给出警告?

  9. 9

    (arr [i]-arr [j])的最大值,其中i <j

  10. 10

    当我水平滚动时,为什么铬输入“ j”和“ k”字符?

  11. 11

    为什么j的值在“ j = 2 * 3/4 + 2.0 / 5 + 8/5;”中 设置为2而不是3?

  12. 12

    为什么j8583 Configparser失败,并且模板字段没有默认值?

  13. 13

    如何在Numpy / Theano中表达c [i,j,k] = a [i,j] * b [i,k]?

  14. 14

    从循环索引k获得i <j?

  15. 15

    找出所有整数i,j,k> = 0,使得i + j + k <= d?

  16. 16

    查找所有这样的不同元组(i,j,k)的计数,其中(i * j)%k == 0

  17. 17

    计算数组中 a[i] < a[j] > a[k] 的数量的有效算法,其中 i < j < k

  18. 18

    性能最高的方法,用于计算lcm(i,j),i和j的和,范围从1到k

  19. 19

    查询数组索引范围i,j中范围A [i],A [j]中的值

  20. 20

    检查数组中所有i <j <k的a [k] <a [i] <a [j]的三元组数量的最佳方法

  21. 21

    检查数组中所有i <j <k的a [k] <a [i] <a [j]的三元组数量的最佳方法

  22. 22

    循环中忽略 i 和 j 的相同值

  23. 23

    对于JVM字段描述符,为什么将Z用于布尔值,将L用于类的实例,将J长期使用?

  24. 24

    存储重新计算 N 次到二维范围 (N,i*j) 的二维范围 (i,j) 的值

  25. 25

    查找最大索引j的有效算法,使得索引i至j的总和小于k

  26. 26

    什么-j4值用于调用make?

  27. 27

    J2ME中getMajorDeviceClass的int值是什么?

  28. 28

    生成范围(i,j)之间的核苷酸k-mers的所有组合

  29. 29

    多个嵌套的for循环仅在R中的i = j = k索引下迭代

热门标签

归档