C语言中,运行(x||(y=5),x&&z||(y=1),x+y+z)的结果是什么?

如题所述

(x||(y=5),x&&z||(y=1),x+y+z)
整体是逗号表达式,规则:从左至右计算结果,返回最右边表达式的值。
这里没给出x和z的初始值,所以最终的结果也不好判断。。
假设 int x = 1, y = 2, z = 1;
还有一个知识点,对于运算符 || 如果左边为真,则右边表达式不执行,直接返回真;对于 && 如果左边为假则右边表达式不执行,直接返回假。
x为真,则y = 5并不执行,x为真执行z,z也为真,则x&&z整体为真,则y = 1不执行,最后返回
x + y + z表达式,结果为 1 + 2 + 1 为4.。

测试程序:
#include <stdio.h>

int main()
{
int x = 1;
int z = 1;
int y = 2;
int num;

num = (x||(y=5),x&&z||(y=1),x+y+z);
printf("%d\n",x);
printf("%d\n",y);
printf("%d\n",z);

printf("%d\n",num);

return 0;
}
输出为:
1
2
1
4
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-29
1

C语言,下面输出的x,y,z,分别是多少
x==0 y==0 z==0 x==0 y==1 z==1

C语言 main() {int x,y,z x=y=1 z=x+(++y||++z)这里面,这个(++y||...
|| 是或运算,若两边的表达式一个为真则整个表达式为真,++y的值是2,即为真,不必判断++z,所以(++y ||++z)表达式的值为1,则z = x+1 = 2。

C语言问题 程序中的if(x=y+z)是什么意思?
就是把y+z的值给x,然后如果x不为0就输出***,否则输出

...执行后x、y、z是 if (x>y||x<z&&y>z) {z=x,x=y,y=z;}
if(x>y||x<z&&y>z)语句中,先执行x>y,结果为假,由于后面是||预算符,所以继续往下面判断x<z,x<z的结果为真,由于接着是&&运算,需要继续往后判断,执行y>z后,结果为假,与前面那个结果“相与”,就是“假”&&“真”,结果还是为假。因此{z=x,x=y,y=z;}这句话就不执行了。至此...

在C语言中, x=3,y=4,z=5 x‖y+z&&!y为多少?
!优先级最高,计算!y值为0,然后是加号优先级,y+z=9,然后优先级是逻辑与,9&&0,值为0,最后优先级最低的是逻辑或,3||0,值为1

c语言输入xyz输出f(x,y,z)
void main(){ int x,y,z ;scanf("%d,%d,%d",&x,&y,&z) ;printf("%s \\n",f(x,y,z)) ;} int f(int x,int y ,int z){ int s = 0 ;s+= (g(x,y,z)-x)\/(y+z) ;s+=(g(x,y,z) - y)\/(x+z) \/ (x+z) ;s+=(g(x,y,z)-z)\/(x+y) ;return s ...

急求===《C语言程序设计实验·设计·习题》的答案
解:结果: 9,11,9,10 第4章 4.4.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'.想得 到以下的输出格式和结果,请写出程序要求输出的结果如下: a= 3 b= 4 c= 5 x=1.200000,y=2.400000,z=-3.600000 x+y= 3.60 y+z=-1.20 z+x=-2.40 u= 51274 n= 128765 c1...

简单的c语言运算
((x+y)>z)&&(y==z)&&X||y+z&&y+z (1)&&(0)&&1||1&&1 按原理来算,在计算机中,当表达式已经为零了,后面的是不会再继续判断的 所以,表达式在执行y==z时,后面就不需要执行,整个表达式已经是零,无论后面的表达式是多少个1,0与或非运算都还是零。但是,按照运算的优先级,去把...

c语言 求下列表达式的值
①x||y+z&&y-z 首先计算y+z的结果,为9 再计算y-z的结果,为-1 后计算x||9&&-1表达式,先计算9&&-1,结果为1,再计算x||1,结果为1.即最终结果。②!((x<y)&&!z||x)主要考查运算符的优先级,及结合性

c语言题,求结果及过程
所以,优先计算++y&&z++ \/\/ 因为++在前是先+1在运算,++在后是先运算在本身+1,可以得到3&&0=0;y=3,z=1 然后在计算++x || 0=>3 || 0=1 ,x=3所以就可以得到a=1;printf("%d,%d.%d \\n",x,y,z);\/\/ 输出结果就是,x=3,y=3,z=1;

相似回答