C语言 x,y,z=10 和 x=y=z=10 那个对?

作者&投稿:亢萧 (若有异议请与网页底部的电邮联系)
在C语言中,x=10.y=15.z=10则经过运算y=(z=x=0,x+10);后x,y,z的值是多少~

先运算z=x=0,即x=0,然后将x的值赋给z,z=0
再运算x+10=0+10=10。逗号运算符,以最后一个表达式的值为运算结果,运算结果为10,并将10赋给y,y=10
执行语句后,x的值是0,y的值是10,z的值是0

--的优先级高于%,因此先运算z--。可是,由于z--是执行完语句后z才自减1,因此虽然先执行z--,但运算x%z的值时z仍为10,执行完语句后z才变成9
y=10%10=0
y的值是0

如果是声明的话
int x,y,z=10;这样没错,只不过z是声明的同时初始化了,但单独拿出来使用算错

x=y=z=10,在赋值中是对的,但声明中初始化不允许这样做,单独拿出来应该算对(前提是x,y,z都已经声明)

那很抱歉的说,你们老师错了,实践是检验真理的唯一标准:
#include<iostream>
using namespace std;
int main()
{
int a=b=c=10;
return 0;
}

1>adf.cpp
1>c:\users\liujq007\documents\visual studio 2008\projects\ccc\ccc\adf.cpp(5) : error C2065: “b”: 未声明的标识符
1>c:\users\liujq007\documents\visual studio 2008\projects\ccc\ccc\adf.cpp(5) : error C2065: “c”: 未声明的标识符

就这两句代码来说,这个没有什么对不对的

x,y,z=10:只有z被赋值为10,x,y没有被赋值
x=y=z=10 :x,y,z都被赋值为10

short int x=10,y=10,z=10这样是对的
short int i=j=k=555 你老师这样也对
short int x,y,z=10 这样就错了

int x,y,z=10 ;没错,是定义了x,y,z三个变量,同时给z赋值。
int x=y=z=10 ;语法不对,在C语言里不允许x=y=z=10 赋值,必须写成x=10,y=10,z=10 ;

第一个对,第二个相当于没给y、z赋值


瓦房店市13955395758: 问一个简单的C语言计算题..C语言x=(y=(z=10)+5) - 5是多少== -
在萍龙心: 从这个式子可以看到,首先将10赋值给z,然后将z+5的值赋值给y,即得到y=15,然后将y-5的值赋值给x,得到x=10,所以最后的结果是x=10,y=15,z=10

瓦房店市13955395758: 简单的C语言问题 -
在萍龙心: 10 Y=Z=X 就是Y=Z=10 那么 Y Z新值就是10 X重新赋值 由于 YZ都是10 所以 X的新值是10 如果 Y和Z不一样 那么X=Y=Z X和Y都是Z的值

瓦房店市13955395758: 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.

瓦房店市13955395758: 执行下列程序段后,x、y和z的值分别是 int x=10,y=20,z=30; if(x>y)z=x;x=y;y=z; -
在萍龙心: if的作用域只有z=x; 也就是说 x=y; y=z; 会执行 x=y=20 y=z=30 z=30 因此输出x=20,y=30,z=30

瓦房店市13955395758: 怎么用C语言写一个计算两数相加之和的程序… -
在萍龙心: 刚好有~ #include #include #include struct Bigint { int len; int digits[1000]; }; Bigint a,b,c; void main() { char str[1000]; int i,j; puts("Input two large integers:"); scanf("%s",str); //用str接收第一个数 a.len=strlen(str); //a的长度 memset(a.digits,0,sizeof(...

瓦房店市13955395758: 已知XYZ+YZZ=532,X,Y和Z为数字,编写程序求X,Y,Z的值,用C++语言 -
在萍龙心: #include <stdio.h> int main(void) { int x = 0; int y = 0; int z = 0; for (x = -9; x < 10; ++x) { for (y = 0; y < 10; ++y) { for (z = 0; z < 10; ++z) { if (x * 100 + y * 10 + z + y * 100 + z * 10 + z == 532) { printf("[x, y, z] = [%d, %d, %d] ==> 532\n", x, y, z); } } } } return ...

瓦房店市13955395758: C语言 一个函数内有数据类型说明语句如下: double x,y,z(10); -
在萍龙心: 应该选择C.C语言的初始化方法,既可以double z=10,也可以写成double z(10) 定义数组的是[]中括号,不是小括号.

瓦房店市13955395758: C语言编写程序 -
在萍龙心: #include int main() { int x,y,z; int n=0; for(x=0;x for(y=0;y for(z=0;z { if(x+y+z==10 && x+2*y+5*z==18) { printf("x=%d,y=%d,z=%d\n",x,y,z); n++; } } printf("总共的方法有: %d种\n",n); return 0; }运行结果为:x=2,y=8,z=0 x=5,y=4,z=1 x=8,y=0,z=2 总共的方法有: 3种

瓦房店市13955395758: c语言中:x=3,y=4,z=2, i=x<!y&&(z=10)>y 问i=?详细点! -
在萍龙心: 这就是优先级的问题、在C语言中先是算术运算,再是关系运算,然后是逻辑运算;先把10给了z,然后!y的值为0,xy 就不计算了,这是C语言的一个特点、因为前面为0后面无论是什么结果都为0,所以i=0

瓦房店市13955395758: c语言x>y>z为什么等于0 -
在萍龙心: 这个题是先计算x>y>z的值,再把结果赋值给j. 我们分析一下计算过程,不妨假定xyx都是整型数(int): 首先两个大于号,从左向右计算,先计算x>y的值,就是比较x与y的大小:如果x>y成立,则它的值=1;否则它的值=0. 第二步再来把x>y的...

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