c - 解释c程序的输出

标签 c

#include<stdio.h>
void main(){

int x,y,z;
x=y=z=1;
z=++x||++y&&++z;
printf("%d %d %d \n",x,y,z);
getch();
}

输出为 2 1 1 !我不明白为什么...如果我们按照运算符的优先顺序进行操作,则无法解释。请帮忙

最佳答案

逻辑(||)引入一个序列点。它的左侧被评估。然后,当且仅当产生 0/false 时,才对右侧求值。

在这种情况下,++x 结果为 2,因此永远不会计算右侧。这反过来意味着 yz 保持为 1

关于c - 解释c程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287750/

相关文章:

c - C语言如何传递输入和检索输出到子进程

c - 指向结构的指针的语法 - 链表

c - 允许非root应用程序修改/etc中的只读文件

clang:不能将 'precompiled-header' 输出与多个 -arch 选项一起使用

c - 这个 for 语句有什么作用?

c - C语言中的空格替换

objective-c - 如何声明具有未确定返回类型的 C 函数?

c++ - 如何在终端上以星号(*)的形式显示输入密码

C程序编译错误: undefined reference

c - 是否保证执行 memcpy(0,0,0) 是安全的?