c语言:x=y=1;z=x++,y++,++y;计算输出x,y,z的值

作者&投稿:汲陶 (若有异议请与网页底部的电邮联系)
C语言中:若x=y=1,z={x+x,y++,++y},输出x,y,z的值~

x=1,y=1
z=x++
把x给z,所以z=1,之后x++,所以x=2;
y++
原来y=1,现在变成2
++y
前面y=2,现在变成3.
所以,最后:
x=2
y=3,
x=1

#include
using namespace std;
int main()
{
int x,y,z,w;
x=y=z=1; //x=1,y=1,z=1;
w=++x||++y&&++z;//x=2,因为++x之后x=2;++x整个表达式也为2>0,所以||后的运算就停止了w= 1;y=1;z=1;
///或运算遇到大于等于0就返回1.不再向后计算。

cout<<"w="<<w<<endl;
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
cout<<"z="<<z<<endl;

return 0;
}
结果:w=1.x=2.y=1,z=1

x=1,y=1

z=x++

把x给z,所以z=1,之后x++,所以x=2;

y++

原来y=1,现在变成2

++y

前面y=2,现在变成3

所以,最后:

x=2

y=3

x=1

扩展资料

C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。

当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。



x=1,y=1
z=x++ 把x给z,所以z=1,之后x++,所以x=2;
y++ 原来y=1,现在变成2
++y 前面y=2,现在变成3.
所以,最后:
x=2
y=3,
x=1

逗号表达式优先级低于赋值运算符,所以z = x++, y++, ++y;===》(z =x++),(y++),(++y);
应与z = (x++, y++, ++y);区分

第4步应该错了吧。。。z只执行了z=x++这一步。后面的只是y的自加而已。没有将值付给z。忘采纳

答案是2,3,1.,首先z=x++,结果是z=x,然后在执行x++,y++,x=y=2,在执行++y,所以最后x=2,y=3,z=1


C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0 具体请看下边程序...
由于刚刚学习这门语言,请指教 main(){intx=1,y=1,z=10;if(z<0)if(y>0)x=3;elsex=5;printf(''%d\\t'',x);if(z=y<0)x=3;else... main() {int x=1,y=1,z=10; if(z<0) if(y>0) x=3;else x=5; printf(''%d\\t'',x);if(z=y<0) x=3; else if(y==0) x=5;...

...输出结果是#include<stdio.h>main(){int x=1,y=1;int m n;m=n=1...
程序运行过程解析:1、完成变量的赋值,其中有x=1,y=1,m=1,n=1。2、执行第一个switch(m),因为m=1,所以进入case 1分支。在这个分支里,执行第二个switch(n),因为n=1,所以进入case 1分支,运行x=x*2=1*2=2。由于case 1没有break语句,因此继续执行case 2,y=y*2=1*2=2。3、...

c语言:int x,y,z,w; x=y=z=1; w=++x||++y&&++z; 经过计算后w,x,y,z...
include<iostream> using namespace std;int main(){ int x,y,z,w;x=y=z=1; \/\/x=1,y=1,z=1;w=++x||++y&&++z;\/\/x=2,因为++x之后x=2;++x整个表达式也为2>0,所以||后的运算就停止了w= 1;y=1;z=1;\/\/\/或运算遇到大于等于0就返回1.不再向后计算。cout<<"w="<<w<<...

int x=1,y=1; ++x||y++; y是多少
执行顺序是,若左边不真时,则再判断右边;若左边为真时,则不再进行判断右边。最后,由于你的++x||y++的从左到右进行运算的,所以||(或运算)执行到++x为真时(即不为0),则直接停止判断,直接执行下一句。所以,++x执行了,前加1;而y++没有执行,则没有加1。即x=2,y=1。

在c语言中,定义int x=x=y=z=1;是错的,而int x,y,z;x=y=z=1;是正确...
在C语言中,您提到的第一种写法是错误的,而第二种写法是正确的。在C语言中,您可以使用如下语法来定义多个变量:int x, y, z;这样就可以创建三个整型变量x、y、z。然后,您可以使用如下语法来将这三个变量赋值为1:x = y = z = 1;这种写法是正确的。它会将三个变量x、y、z都赋值为1。

C语言题目:设 int x=0, y=1; 表达式(!x&&y--)的值是( )A) 0 B) 1...
!x的值为1,y--的值为1(先取y的值作为结果,然后再y自减),所以,表达式(!x&&y--)的值是( B) 1 )

用汇编语言编程 x>0 y=1 x=0 y=0 x<0 y=-1
CODE SEGMENT ASSUME CS:CODE X DW -890 Y DW ? START: PUSH CS POP DS PUSH CS POP ES MOV AX,X CALL SIGN MOV Y,AX

c语言中x=y=z=1; m=++x||++y||++z;m的值为多少
先执行++x,x=2≠0,++x||++y||++z的值是1,后面的++y、++z不再执行。将1赋给m,m的值是1。

如何使用C语言把x=1,y=2变为x=2,y=1
include “stdio.h”int swap(int &i,int &j){ int temp;temp = j;j = i;i = temp;return 0;} void main(){ int i =1,j = 2;swap(i,j);printf("i = %d\\n j = %d\\n",i,j);} 请调试运行,这个是地方注意传参的问题,你可以将 int swap(int &i,int &j)改为int ...

c语言中y!=1是什么意思
!=为C语言中的条件运算符之一,读作不等于。其形式为 a!=b 计算规则为:1 当a与b相等时,该表达式结果为假,即0;2 当a与b不相等时,该表达式结果为真,即1。于是y!=1的含义就是,当y为1时,表达式结果为0,否则为1。

乌兰察布市13211664328: c语言:x=y=1;z=x++,y++,++y;计算输出x,y,z的值 -
路任立将: x=1,y=1 z=x++ 把x给z,所以z=1,之后x++,所以x=2;y++ 原来y=1,现在变成2++y 前面y=2,现在变成3.所以,最后:x=2 y=3,x=1

乌兰察布市13211664328: x=y=1;z=x++,y++,++y; z等于多少? -
路任立将: x++,在表达式完成后x才加1;所以z=x先于x++发生,所以z=1; 这里就是++在前后在后的区别了

乌兰察布市13211664328: C语言int x,y,z; x=y=1;z=x++,y++,++y; z的值为什么是1? 按照都好运算符的定义 不是应该z=++y么? -
路任立将: int x,y,z; //定义x,y,z三个变量 x=y=1;//对x,y赋初值均为1 z=x++,y++,++y;//这里是一个逗号表达式,最后表达式的运算结果为最后一个表达式的结果,故为++y=2 注意:逗号表达式的优先级是最低的 ,低于赋值表达式的 而z=x++=1;因为这是后置+,所以先计算,后++.

乌兰察布市13211664328: c语言:main()?{int x,y,z;? x=y=1;? z=x++,y++,++y;? printf("%d,%d,%d\n",x,y,z);} -
路任立将: #include<stdio.h> void main() {int x,y,z;x=y=1;z=x++;y++;++y;printf("%d,%d,%d\n",x,y,z); } 运行结果是2,3,1. x赋给z后再自加,z为1,x为2,y连续加两次为3.

乌兰察布市13211664328: C 语言 有以下程序main( ){ int x,y,z; x=y=1; z=(++x, ++y),++y; -
路任立将: 这里z=(++x,++y) 是一个单独的表达示,z的值就是第一个++y的值,跟后面的++y没有关系,当然是2了. 如果是 z=((++x, ++y),++y);,z的值就是3了 .

乌兰察布市13211664328: 求大神赐教,求一C语言题!!有以下程序 #include <stdio.h> main() { int x, y, z; x=y=1; z=x++,y++,++ -
路任立将: 通过实际验证了的结果,答案是 A 这里我分布说明,程序的过程: 第一步计算:x = y = 1; 第二步计算:z = x ; 结果 z = 1; 第三步计算:x++ ; 结果 x = 2;第四步计算:y++; 前面赋值 y=1; y++ 后 y = 2; 第五步计算:++y; 前面 y++ 后,y =2 这里 ++y; 结果 y = 3; 最后结果:x =2 ; y = 3 ; z = 1 只要明白了,运算的优先权,就能很好的理解并计算

乌兰察布市13211664328: c语言编程中z=(x++,y++)是什么意思? 如果x=1 Y=2 那么z是几 z是按照怎样一种计算过程得到的? -
路任立将: 逗号也是c++中的一种运算符,返回逗号右边表达式的值. 所以上述使用方法等价于z=(1,2) = 2.即y++的值赋值给z. 注意后自增而不是前自增,后自增优先级高于逗号运算符就可以了.

乌兰察布市13211664328: C语言中,int x,y,z;x=y=1; z=x++,y++,++y;printf("%d%d%d",x,y,z);最后输出的结果是2 3 1 为什么z不是3? -
路任立将: 赋值运算符的优先级是 14,而逗号表达式的优先级是15,也就是说上面的表达式中应该等价于这样的结合:(z=x++),y++,++y;如果这样写的话,则答案很清晰, 为:2,3,1

乌兰察布市13211664328: c语言中y=x+++x是什么意思?若x=1,则y=? -
路任立将: 首先,等号是右结合,故先算x+++x,再复制给y;+是左结合且优先级比++低,故先算x++;x++结果是1,但运算完后x自增变为2.具体过程如下:1、t = x++ = 1( 结束后t=1, 但x = 2);2、t2 = t+x = 1 + 2 = 3;3、y = t2 = 3.即 y = 3

乌兰察布市13211664328: 以下程序的运行结果是 x = y = 1; z = x++, y++, ++y; pri -
路任立将: x = y = 1; //赋值y=1,x=1 z = x++, y++, ++y;//这一句逗号表达式可以按下面三句理解(等价): 【 z = x++, //先把x的值赋给z,即z=1,x再自增1,自增后x=2 y++, //y后自增,自增后y=2 ++y; //y先自增,自增后y=3 //需要说明的是单独出现的++y与y++作用是相同的. 】printf("%d,%d,%d", x, y, z);//最后打印xyz的值: 2,3,1

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网