请问如何理解C语言中的!((X=='A')||(X=='a')),这种表达式是指“ X不等于'A'

请问如何理解C语言中的!((X=='A')||(X=='a')),这种表达式是指“ X不等于'A' 且 X不等于 'a'” 呢 还是指“X不等于'A' 或者 X不等于 'a' ” 呢 , 可否将!((X=='A')||(X=='a')) 分解成更加容易理解的形式。 还有!((X=='A')||(X=='a'))与!((X=='A')&&(X=='a'))有什么区别?

可用逻辑代数代换。
!((X=='A')||(X=='a'))是“或非”,“或非”=“非与”,所以!((X=='A')||(X=='a'))→X!='A' && X!='a';
!((X=='A')&&(X=='a'))是“与非”,“与非”=“非或”,所以!((X=='A')&&(X=='a'))→X!='A' || X!='a'。
不过第二式是无意义的,它是恒成立的。看,X=='A' && X=='a'是不可能成立的,因为X不可能既等于'A'又等于'a',所以它的“非”!((X=='A')&&(X=='a'))总是成立的;变换成X!='A' || X!='a'后当然也是恒成立的,你自己分析。
!((X=='A')||(X=='a'))与!((X=='A')&&(X=='a'))的区别,前者是“或非”,只要一项成立,整式就不成立;后者是“与非”,两项都成立,整式才不成立。区别大了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-02-10
第一个是X=='A'或A=='a的非第二个是X=='A'和A=='a'的非,刚考完省二级C我也有点忘了。。。
第2个回答  2014-02-10
&& 是个双目运算符,是从左到右运算的。它的运算规则是:对于表达式(x=a>b)&&(y=c>d),只有当左边的表达式(即(x=a>b))为真时,才进行右边表达式的运算(即(y=c>d))。而楼主 定义a=1,b=2;所以a>b为假,即x=0;所以右边的表达式不进行运算,即y还是等于2;运算结果截图
如果把条件改一下 int a=2,b=1,c=4,d=3,x=2,y=2,运行后 y则等于1.运行结果截图
讲 的这么清楚了,可以给分了吧??!
第3个回答  2014-02-10
其实很容易,你自己把自己搞晕了追答

!((X=='A')&&(X=='a'))根本没这种说法

!((X=='A')||(X=='a')),这种表达式是指“ X不等于'A' 且 X不等于 'a'” 即(X!='A')&&(X!='a')

追问

谢谢 后面的问题呢

追答

!((X=='A')&&(X=='a'))根本没这种说法

你见过a=1且a=2这种东西嘛。你和我很像 我有时会突然在高数 c语言 上陷入自己设的套其实别人一眼就能看出来。哎

第4个回答  2014-02-10
不等于A且不等于a
相似回答