c - 请帮我解决c程序的工作

标签 c

int x = 1,y = 1,z = 1;

++x || ++y && ++z;

printf("%d%d%d",x,y,z);

它给出的输出是 2,1,1。但是我无法理解这些一元运算符和逻辑运算符如何给出这样的结果。是否只有一元运算符仅适用于第一种情况而不适用于其他情况。 C 也没有任何 bool 数据类型。请帮助我解决我的问题。

最佳答案

lurker上面的答案是正确的。

||&&short circuit operators .

等效代码是:

if(! ++x ) {
    if( ++y ) {
        ++z;
    } 
}

关于c - 请帮我解决c程序的工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29113331/

相关文章:

将字符转换为整数,然后将整数转换回相同的字符

c++ - 添加两个数组?

c - C Shell - 如何读取和执行用户输入?

c++ - 什么是 grey.cols-1 和 grey.rows -1 以及两个 for 循环

c - 将指针数组分配给数组

c - 如何将字符转换为二进制?

c - 在 C 中与 mmap 共享 vector

c - 使用 getchar 从控制台打开文件

c - 来 self 创建的二进制文件的 fread() 的段错误

c - C 中的枚举迭代