C语言,这个程序的解释,值为什么是0,0,-10.怎么算的

作者&投稿:月童 (若有异议请与网页底部的电邮联系)
C语言代码解释,怎么算呢~

a=2,b=1

int main()
{
int x=1,y=0,a=0,b=0;
switch(x) //第一步 此时x=1,跳转到case 1
{
case 1:
switch(y) //第二步此时y=0 ,跳转到case 0
{
case 0:a++; //第三步a++后a=1
break;
case 1:b++;
break;
} //此处没有break,继续执行case2
case 2:a++;b++; //第四步此时a=2,b=1
break; //第五步 跳出打印
case 3:a++;b++;
}
printf("a=%d,b=%d
",a,b); //第六步a=2,b=1
}

a=1,b=7: do b=7/2=3; a=a+b=1+3=4;
a=4,b=3: do b=3/2=1; a=a+b=4+1=5;
a=5;b=1; end

首先你写的程序就有问题。
c=(a+=a-=5),(a=b,b+3);中间那个逗号应该是英文状态下的。c=(a+=a-=5),(a=b,b+3);
给你说说逗号的运算规则吧。逗号运算符是从左到右运算的。
所以,你的程序先运行c=(a+=a-=5),这个运算下来a=-10的,所以c=-10。之后就是运算(a=b,b+3);这里面再次从左到右运算,也就是先运算a=b,此时a=0,之后运算b+3,b的值一直没有变,所以b还是0.
所以最后的结果就是0,0,-10了。
满意请采纳!

a=b,b+3这个是a=b=0;b+3的值并没有赋给任何变量。。。
a-=5.....a=a-5.. ....-5
a+=-5;............ a=a+(-5)=-10;
所以c=-10;

(a=b,b+3); 这个括号有问题吧


c语言,求解释这个程序
详细解释如下:for(i=j=0;str[i]!='\\0';i++)\/\/首先i,j都从0开始,当str[i]等于‘\\0’之前,一直i++;(因为'\\0'是字符数组结束符号,读到‘\\0’代表字符数组结束。)if(str[i]!='a')\/\/对str中的所有值都检查过去,如果不是a,就存到str[j]中 str[j++]=str[i];\/\/str[j]...

c语言的,这个程序怎么解读?
这个程序,第一步是执行do while,循环输入x,如果x是不等于1的负数,就重新输入,直到输入-1或者正数?如果输入-1,整个程序就结束了。如果输入正数,用max保存这个数。然后执行while,循环输入x,如果x大于max,就替换之。直到输入-1.然后输出max保存的这个最大值 ...

C语言,这个程序的结果,怎么解释 ?
{printf("%s",p);printf("\\n");} 输出 abcd cd 解释如下 第一句 定义字符数组s 和字符串指针p 第二句 定义一个循环,首先把字符数组s的首地址赋给p,当p的地址小于等于s的首地址加4时,循环,每个循环p的地址加2 第三句 打印以p为首地址的字符串 第四句 打印回车 ...

麻烦各位帮我解析一下这个C语言程序? 越详细越好
这是大致分析。char ch[2][5]={"6934","8254"},*p[2]; \/\/定义了一个二维数组的字符串,和指针。int i,j,s=0;\/\/这个循环 是 将ch的值,赋给指针*p[0],*p[1]for(i=0;i<2;i++)p[i]=ch[i];\/\/这两个循环是将指针P[0],P[1]的偶数位 转换为int型 赋给S。for(i=0;...

如图,这个c语言程序,求详细讲解
char a[] = "program", *p;\/\/定义了一个字符数组a,一个字符指针pp = a; \/\/将指针p指向数组a的首地址while(*p != 'g') \/\/当*p的内容不等于g则执行循环{printf("%c\\n",*p-32); \/\/将取得的内容-32,也就是进行ASCII转码,\/\/ 比如a的ASC码是97,97-32 = 65, 65是A的ASCII码...

C语言程序解释
这是一个三数排序,是通过俩俩比较,然后按照从小到大输出,下面来读一下这个程序:main(){int x,y,z,t;scanf("%d,%d,%d",&x,&y,&z);if(x>y){t=x;x=y;y=t;} \/*如果x>y,就将两者交换;如:当x=4且y=1时,则执行){t=x;x=y;y=t;}语句;执行后的结果是x=1;y=4;*...

C语言,关于程序运行结果的解释
这个程序的意思是,从键盘输入一行字符,照原样显示出来。当输入!后,程序执行结束。执行的原理关键在这一行:while(putchar(c=getchar())!='!')首先:c=getchar(),字符变量c从缓冲区获得一个字符 然后:putchar(c=getchar()),将字符打印出来 最后:putchar(c=getchar())!='!',判断字符是...

请问这个c语言程序函数如何解读?
这个函数的功能,就是把一个数组的所有元素向后移动,被移出的末位元素,填回到首位 void move(int* a, int n, int m){\/\/a:数组首地址,n,数组元素个数,m,需要移动几次int* p, array;array = *(a + n - 1);\/\/ 把数组a的末位元素保存到变量array里面for (p = a + n - 1; p...

怎样解释这个c语言程序??特别是划线部分
如果LZ 硬要说,a已经=123了,不会大于3位数了。那我想说,你还要 a 干嘛,你已经=123了,还取什么位啊,直接 输入 3-2-1 不就好了。这意思是说,尽管 a已经存在某个值了,但不能改变 它的范围 是 -32768~32767的事实,既然这个事实存在,就必须考虑事实,百位 用 a\/100%10 才是正确、...

怎样用c语言解一元二次方程
对于如下的一元二次方程:ax*x+bx+c=0设计C语言程序,输入一元二次方程的三个系数a、b、c,求解出该方程的两个根,并且允许用户在程序中多次输入不同的系数,以求解不同的一元二次方程的解。编程思路分析:对于该方程,令delta=b^2-4*a*c,从数学的角度来讲,我们需要根据delta的值来判断该...

仙游县19399045992: C语言:写出程序运行结果并解释为什么 -
有苇吡诺: f=330-256;////char 一位范围0-255 330 溢出,等价于d=330-256; #include #include int main() {char f,e;f=330-256;////char 一位范围0-255 330 溢出,等价于d=330-256;e='\141';//'\141'就是 97int a='\141'-97;//要是相等则输出为0printf("%d ,%c,%d",a,f,e);return 0; }

仙游县19399045992: 为什么这个程序的值会是22 #include<stdio.h> main() { int j,a=5; j=(++a)+(++a)+(++a); printf("a=%d,j=%d\n",a,j); }
有苇吡诺: 结果应该是“8 21”,原因解释如下: 在第一个括号中++a的结果是6,第二个括号中的++a结果是7,第三个括号中++a的结果是8,所以j的结果是6+7+8 = 21,这行语句执行完后,a的结果为8. C++应该是按照下面这样编译的: 按照括号优先原则,(++a)先运算,共有三项(++a),而++a是先加运算,共加了三次,所以这三项(++a)的结果都是8,最终结果就是8+8+8=24. 所以照道理C++的结果应该是24才对.. 而GCC的编译是按照我前面所说的来的,所以是21.

仙游县19399045992: c语言 这个程序怎么解释 -
有苇吡诺: p + 0x1 = 0x100014 p是结构体的首地址,则p+1这是指向下一个结构体的地址,而一个结构体所占的内存为sizeof(struct Test)=20.(unsigned long) p + 0x1 = 0x100001 p的值是一个地址值为0x100000,(unsigned long)p把p转换为一个无符号长整形数值,其加1之后,就是0x100001(unsigned int*) p + 0x1 = 0x100004 p的值是一个地址值为0x100000,(unsigned int*) p把p转换为无符号长整形的指针,而c/c++语言中,一个长整形指针占四个内存,所以,其值为:0x100004

仙游县19399045992: C语言这个程序怎么解释 -
有苇吡诺: "c--" 的意思是使变元c减少1 它作为表达式的值是变元c原来的值(++c返回增加后的值) ^^^^^^^^^^ ^^^^ 因此循环进行了3次 另外,标准c有所谓短路求值的特点,对&&和||从左到右依次求值(指在相同优先级下),并且当已经可以计算出最终结果时,以后的式子直接忽略.所以最后结果是c=-1,a=3 即c减少了4次 ,a却只增加了3次

仙游县19399045992: C语言程序谁可以给我解释一下,为什么是这结果?详细点哦,谢谢! -
有苇吡诺: c语言中,逻辑语句中,某个语句不执行便可知道整个语句的真假,那么这个语句便不执行,你给的例子中if((j++||k++)&&i++)j++||k++,由于是 或 的关系,所以前面的j++为真,整个语句肯定为真了,那么k++就不运行了,懂了吗?k的初值为2,没运行k++,所以后来还是2

仙游县19399045992: 怎样解释这个C语言程序
有苇吡诺: 这个是递归函数 如果 x = 0 或1 时,值为 3 ,否则值为 x-fun(x-2); 当 x =7 传入函数 fun,因为不等于 0、1,所以 = 7- fun(5) ;而 fun(5) 中 因为 不等于 0、1 ,所以 fun(5) = 5- fun(3),…… 最终得到 fun(7) = 7- fun(5) = 7 - (5-fun(3)) = 7- (5-(3-fun(1))) = 7- (5-(3-3)) =2 值序列如下(从x=0开始) 3,3,-1,0,5,5,2,2

仙游县19399045992: C语言初学者一个简单的程序解释(解释以下的程序的步骤和作用) -
有苇吡诺: 这是个输入输出字符的程序先建立一个80容量的字符数组,用getchar进行无缓冲输入,当有'\n'输入时,停止输入语句,接下来就开始从头输出

仙游县19399045992: C语言里面的值是什么意思,返回值等一下名词,做一下解释 -
有苇吡诺: 就是数值,是存放在某内存单元的数据 返回值就是在某程序执行完毕后,在约定的寄存器中存放的数值,可供调用者存取使用

仙游县19399045992: c语言这个程序……能不能解释一下什么意思?特别是return 1..还有主函数为什么if()就能得 -
有苇吡诺: %是求余数的意思,比如5%2的意思就是5除以3得到的余数 在C语言中0表示假,非0表示真,那么那个return 1的意思就是返回的值为真,if条件为真,if的语句就会被执行

仙游县19399045992: C语言这个程序是什么意思 -
有苇吡诺: fun函数给力注释,判断是不是质数,如果是质数,则返回1,如果不是质数就返回0!而if (fun(k))意思就是说如果fun(k)的返回值为1,即fun函数判断后数是质数,就运行if后面括号后的内容!if (fun(k))括号中,a等于每个质数质数之和,m统计出...

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