c - 为什么代码“x++ && y++;” 在没有控制运算符的情况下在 C 中工作?
问题描述
我一直在寻找减少线路使用的方法并遇到了这个问题,它似乎工作正常。我在网上找不到任何关于它的信息,有人可以解释发生了什么吗?假设它甚至会运行,我仍然希望 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”来从我的程序中切断一行,但不知道为什么 ^^ 对我有用!感谢所有的回复!
解决方案
逻辑运算符&&
和||
使用短路评估。
对于两者,左侧总是被评估。因为&&
如果左边是“真”,那么右边也会被评估。||
相反,如果左侧为“假”,则评估右侧。
在 C 中,任何非零的东西都是“真”的。只有零是“假”。
推荐阅读
- traefik - Traefik 上的客户端 IP 与 Docker Swarm
- flutter-layout - Flutter:固定底部按钮,中央动态 TextField 随键盘弹出而移动
- python - 在 python 3 中改进我的刽子手游戏代码的建议
- javascript - DjangoTemplate + Javascript - 如何将 javascript 变量与 django 多个值进行比较
- python - 有没有办法根据 y 中的真实标签对特征 X 进行转换?
- php - 如何在容器 docker 中反映主机权限?
- c++ - 通用`count`函数
- c# - 游戏服务器在本地机器上运行,但不在 ubuntu 服务器上
- python - Jupyter Notebook - 导入 Torch
- networking - mininet 中的“默认扇出”如何工作?