C 为什么我的文本不打印?

C 为什么我的文本不打印?,c,printing,int,C,Printing,Int,为什么在这种情况下不调用printf()?在这种情况下,我们可以使用&&吗 { int zz1,zz2; zz1 = 8; zz2= zz1 / 2; if ( (zz1==! 0 ) && (zz2 ==! 1 ) ){ printf("!!!!!!!!!!"); } } 我想你应该写(zz1!=0)&&(zz2!=1) 实际上,(zz1==!0)&&(zz2==!1)是一种有效的语法,但在本例中,它会产生不需要的结果,因为您正在编

为什么在这种情况下不调用
printf()
?在这种情况下,我们可以使用
&&

{ 
   int zz1,zz2;
   zz1 = 8;
   zz2= zz1 / 2;
   if ( (zz1==! 0 ) && (zz2 ==! 1 ) ){
      printf("!!!!!!!!!!");
   }
}

我想你应该写
(zz1!=0)&&(zz2!=1)

实际上,
(zz1==!0)&&(zz2==!1)
是一种有效的语法,但在本例中,它会产生不需要的结果,因为您正在编写:

  • zz1等于(非)0,zz2等于(非)1
  • 也就是说,zz1等于1,zz2等于0
  • 这是错误的,因此不会调用
    printf

  • 也许你想写
    (zz1!=0)和&(zz2!=1)

    =
    不是一个运算符,而是实际解析为两个运算符
    ==
    因为编译器总是选择最长的标记。和
    zz1==!0实际上是
    zz1==!0

    注意:
    !0
    逻辑上不是零,即:==>1

    如果条件为:

  • zz1==!0
    ==>
    zz1==1
    ==><8==1=>False
  • 0
  • 0
    &&
    任何表达式
    ==>
    (根据)
  • 所以,如果条件为false,则不会调用printf 如果在else子句中添加printf,则将执行该命令。check@.

    另外,假设您将
    &
    替换为
    |
    ,即使这样,printf()函数也不会在代码中调用,因为
    zz2=4
    zz2==!1
    ==>
    zz2==!1
    ==>
    zz2==0
    4==0
    =>0


    0 | | 0==0
    ,所以如果条件为false。

    从语法上讲,您的代码是正确的

    zz1 ==! 0 //This is syntactically correct and evaluates to 0, zz1 has the value 4
    //4 == 1 evaluates to false ==> 0
    
    它的计算结果为0,因为您正在将zz1与(!0)进行比较!0的计算结果为1。同样地1的计算结果为0。这不是按位not操作。这是不合逻辑的

    !9 == !1 == 0.
    
    要执行按位NOT操作,请改用“~”标记

    ~1 == -2
    ~0 == -1
    
    C中“不等于”的运算符为“!=”。要使代码正常工作,请更改==!到!=

    运算符&&执行逻辑“与”运算。
    在一段代码中

    (zz1 != 0 ) && (zz2 != 1)
    
    将选中第一个条件表达式。如果且仅当它为true时,将检查下一个条件表达式。
    如果第一个表达式(zz1!=0)为false,则整个表达式的值将减小为0。

    检查语法
    (zz1==!0)
    您从哪种编程语言获得该值?@karthikr is
    zz1==!0
    =>
    zz1==!0
    ?您的输出很可能被缓冲,因为没有换行符否,我更改zz1==!0到zz1=如果你想让用户更好地考虑你的问题,你应该开始接受你的问题的答案。