c语言初级问题!~~高手帮帮小弟啊~~~~~~

来源:百度知道 编辑:UC知道 时间:2024/05/22 10:51:02
1.设;int a=3,b=4,c=5;以下表达式的植为[].
!(a+b)+c-1&&b+c/2
问题:!(a+b)是什么意思啊?该怎么算啊?
2. main()
{int x,y,z;
x=1;y=1;z=0;
x=x||y&&z;
`~~~~~~~~
printf("%d,%d",x&&!y||z);
~~~~~~~~~
问题:x=x||y&&z该怎么算啊?x&&!y||z中的~~!y是什么意思啊?

第一题:1
!这是逻辑非运算符,作用就是将真的变为假的,假的变为真的。例如该题!(a+b)就是将a+b的值进行取非,a+b的值是7(非0为真),取非后就是假了,而逻辑表达式中的值 真就是1,假就是0,所以这么一算!(a+b)就是0了继续运算,再加上c的值减去1这样&&左边的值就是4(非0为真),我们再看看右边,右边的表达式是b+c/2,c/2的值是2,b+2的值是6(非0为真)。故此该逻辑表达式是真即为1。注:&&运算符是两侧表达式都是真的时候整个才是真,当两侧只要有一个为假,则整个表达式就为假。
第二题:
该题和上面一样就是将y的值取逻辑非,若y值为非0(真)时,取逻辑非,结果就是0,若y值为0(假)时,取逻辑非,结果就是1。
x=x||y&&z我们先看x,x的值是1(非0为真),||运算符呢是当该运算符两侧表达式都为假时整个表达式为假,当两侧只要有一个是真,整个表达式就是真。很显然,不管后面是否真假,x是真,所以整个表达式就是真的即1,将1附给x。

附带上一些常用运算符优先级:!>算术运算符>关系运算符>&&>||>赋值运算符
谁的优先级高就先算哪个比如若!a+b就是先将a的值取非再加上b;比如a+b&&b-c就是先算两边a+b,b-c的值再将这个值进行&&运算