对增量运算符的使用感到困惑

标签 c linux

我正在学习 C。我遇到了以下程序 -

#include <stdio.h>

int main() {
  int var1 = 2, var2 = 6;
  var2 = var2 || var1++ && printf("Computer World");
  printf("%d %d\n", var1, var2);
  return 0;
}

在 Ubuntu 10.10 上使用 gcc 4.4.5 编译后,我得到的输出为 -

2 1

我了解如何将“var2”设置为 1。

即使在'var1'上有一个自增运算符,为什么当我们看到控制台输出时它没有自增?

最佳答案

var2 || var1++ && printf("Computer World");

是一个逻辑运算,所以如果 var2true(var2 不等于零)那么第二个逻辑运算 var1++ && printf("Computer World "); 将不会被执行(它被称为 short-circuit operation )。所以这就是 var1 没有递增的原因

尝试以这种方式反转您的逻辑操作,您将获得递增的 var1:

var2 = var1++ && printf("Computer World") || var2;

关于对增量运算符的使用感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20898866/

相关文章:

c++ - 编译用于高放射性环境的应用程序

捕获从 C 中的另一个文件调用的函数的标准输出

c - C 中的外部变量

c - 仅使用 while 和 if 对数组进行排序

regex - 如何搜索整行

linux - 创建 Docker 容器,然后将 Ansible 剧本复制到它们

linux - 使用 Perl 快速清理目录

c++ - 什么是TCHAR字符串以及Win32 API函数的 'A'或 'W'版本?

linux - gdb "run"错误 "...Cannot execute: No such file or directory"

linux - Tmux 在 arch linux 的 ZSH shell 中不起作用