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
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 iszz1==!0
=>zz1==!0
?您的输出很可能被缓冲,因为没有换行符否,我更改zz1==!0到zz1=如果你想让用户更好地考虑你的问题,你应该开始接受你的问题的答案。