c - 为什么代码 "x++ && y++;"在没有控制运算符的情况下可以在 C 中运行?

标签 c math operators logical-operators

我正在寻找减少线路使用的方法并遇到了这个并且它似乎工作正常。我在网上找不到任何关于它的信息,有人能解释一下这是怎么回事吗?假设它甚至会运行,我仍然希望 x++ 的计算结果为 false,因此 y 的值不会增加。但确实如此!

#include <stdio.h>

int     main(void)
{
    int     x;
    int     y;

    x = 4;
    y = 7;
    x++ && y++;
    printf("%d\n%d", x, y);
    return (0);
}
>> 5 
   8

编辑:我的项目的每个函数有 25 行的函数限制,这就是为什么我必须减少几行的原因。

编辑 2:我的所有代码都受制于严格的语法和格式检查器,该检查器禁止使用“x++,y++;”和任何其他多行语句,所以我只是在寻找一个“hack”来从我的程序中切断一行并且不知道为什么 ^^ 对我有用!感谢大家的回复!

最佳答案

逻辑运算符&&|| 使用short-circuit evaluation .

对于左侧,总是 求值。对于 &&,如果左侧为“true”,则右侧也会被评估。对于 || 则相反,如果左侧为“false”,则对右侧求值。

在 C 中,任何非零的都是“真”。只有零是“假”。

关于c - 为什么代码 "x++ && y++;"在没有控制运算符的情况下可以在 C 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53033350/

相关文章:

c - "Write Acces Violation"在函数内部使用 malloc() 之后

java - 看起来像曲棍球棒的数据公式

javascript - && 和 ||在 Javascript 中的相同表达式中

syntax - 我什么时候应该使用 clojure 箭头宏?

c - 使用 C 加速 Python 中的列表操作

c++ - 使用什么数据结构?

MySQL 评级/投票系统(根据票数按最高评级准确排序)

python - 如何将多维多项式与 numpy.polynomial 一起使用?

JavaScript 整数

c - 数组大小作为变量 - 现在正确的是什么?