已经定义:x=0;y=2;z=3;输出的结果是?switch(x){case 0:switch(y==2){case 1:printf("*");break;case 2:printf("%");break;}case 1:switch(z){case 1:printf("$");case 2:printf("*");break;default:printf("#");}} 我想问下y==2的结果为什么是1,

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 02:02:45
已经定义:x=0;y=2;z=3;输出的结果是?switch(x){case 0:switch(y==2){case 1:printf(

已经定义:x=0;y=2;z=3;输出的结果是?switch(x){case 0:switch(y==2){case 1:printf("*");break;case 2:printf("%");break;}case 1:switch(z){case 1:printf("$");case 2:printf("*");break;default:printf("#");}} 我想问下y==2的结果为什么是1,
已经定义:x=0;y=2;z=3;输出的结果是?
switch(x)
{case 0:switch(y==2)
{case 1:printf("*");break;
case 2:printf("%");break;
}
case 1:switch(z)
{case 1:printf("$");
case 2:printf("*");break;
default:printf("#");
}
}
我想问下y==2的结果为什么是1,如果改成y==3,那这个表达式的结果是1 还是0?我在vc上操作后发现,如果y本身的值与等号后面的值不相同,程序会跳过这里,也就是说输出结果成为#,而不是*#,这是为什么?

已经定义:x=0;y=2;z=3;输出的结果是?switch(x){case 0:switch(y==2){case 1:printf("*");break;case 2:printf("%");break;}case 1:switch(z){case 1:printf("$");case 2:printf("*");break;default:printf("#");}} 我想问下y==2的结果为什么是1,
y == 2是一个布尔(判断)表达式,在你的程序中,因为y确实等于2,所以这个表达式的结果为True.在C++中,布尔值存储的形式就是0和1,1就是True,所以y == 2的结果为1.同理,如果改成y == 3,则结果为0(False).
另外,我看你的代码,发现你对switch的用法还不太了解(有很多不规范的地方),我可以简单介绍一下:
switch用作在一个整型变量的值为不同情况时,选择执行不同分支的代码;如果不满足任何情况,则执行default分支;如果没有default分支,则跳过这一块.switch后面跟的是要判断的变量名,case后面跟的才是不同情况下变量的值.
例如:
switch(a) //注意不是a=1或者类似的判断
{
case 1:a = 2; break;
case 2:a = 5; break;
default:a = 100;
}
当a等于1时,程序使a变为2;当a等于2时,程序使a变为5;如果都不满足,a变为100.
注意default分支要放最后.除了最后一分支外,其他分支都要加break语句.
为什么要break?
switch执行的流程为顺序判断,先判断a是否等于1,再判断a是否等于2,最后执行默认分支.然而,正确使用的switch语句应该只会执行其中的一个分支,这就需要break.
break可以让程序跳出switch语句块,如果没有break,程序会继续执行.本例中,这样的错误将导致当a等于1时,a会先变为2再变为5最后变为100.这显然不是期望的结果.虽然有人以此实现高级功能,但是不同的编译器会对这种不规范的代码编译出不同效果的程序,其结果是不可预料的.有的编译器编译的程序甚至会对后来的分支不加选择地执行,程序就会失控.
所以建议你按照标准规规矩矩去用,switch后面的括号里只写变量名,而且不要漏掉一个break(你的代码漏掉了很多).

已经定义:x=0;y=2;z=3;输出的结果是?switch(x){case 0:switch(y==2){case 1:printf(*);break;case 2:printf(%);break;}case 1:switch(z){case 1:printf($);case 2:printf(*);break;default:printf(#);}} 我想问下y==2的结果为什么是1, 设有如下定义:int x=10,y=3,z;则语句printf(%d ,z=(x%y,x/y));的输出结果是多少? 如下定义:int x=10,y=3,z;则语句 printf(%d ,z=(x%y,x/y)); 的输出结果是 定义:x*y= + :x,y,z∈Z,试证明:(x*y) *z=x*(y*z) 不成立定义: x*y= x的(3+a)次方+y的2a次方 : x,y,z∈Z, 试证明: (x*y) *z=x*(y*z) <结合律>不成立不好意思,前面复制漏了 matlab圆域上绘制网线图>> x=[-3:0.1:3];>> y=x;>> [x,y]=meshgrid(x,y);>> z=4*x.*exp(-x.^2-y.^2);>> mesh(x,y,z)这段代码已经输出z函数的图形了,但区域是-3到3的一个正方形怎么改变一下把这个区域变成一个圆形? 若已定义int x,y,z 执行语句x=(x=1,y=z=2,y++,z++),x,y,z的值分别是 设变量已经正确定义并赋值,这个表达式为什么是错误的,x=y*5=x+z x/2-3y=0 y+4z=0 (y≠0)则x/2的值为()已经知道是-12z 为什么? C语言 麻烦讲解一下输出的结果3,2,-1 main(){int x=0;y=5,z=3;while (z-->0&&++x 定义3个整型变量x,y,z和一个实型变量averge,计算并输出3个整数的平均值averge,其中x=1,y=1,z=0.#includevoid main(){int x,y,z;float averge;x=1;y=1;z=0;averge=1.0*(x+y+z)/3;printf(%f ,averge);}为什么要加个(1.0*)?我 Java X =1 Y =2 Z =3 为什么y+=z--/++x. 输出是6?Java X =1Y =2Z =3为什么y+=z--/++x. 输出是6? 定义:int x=3,y=4,z=5;则表达式!(x+y)+z-1&&y+z/2的值是要求说具体算法 C语言:已有定义int x=3,y=4,z=5;则表达式 (x+y)+z-1&&y+z/2的值是? 6.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是 若定义:int x=3,y=4,z=5; 那么表达式 (x+y)+z-1&&y+z/2的值?1 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值为, 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是1,为什么 若|x+3|+|y-2|+|2×z+1|=0求(x×z-y×z)(y-x+z)的值