C语言中y=(b=2,3*2)怎么理解?谢谢各位大侠的帮助啊

来自:5G    更新日期:早些时候
C语言 不知道哪里错了,请各位大侠帮我看看~

你的程序不算问题很大,出错应该是输入格式不对,输入m和n时需要用逗号分隔。
fact函数和main函数里的printf需要略作修改,如下所示:

#include
int main()
{
float fact(int x);
int m,n,c;float a,b,d,e;
printf("input two numbers:");
scanf("%d,%d",&m,&n);
a=fact(m);
b=fact(n);
c=m-n;
d=fact(c);
e=a/(b*d);
printf("%.4f", e);
return (0);
}

float fact(int x)
{
float f;
if (x<0)
{
printf("x<0,data error!");
return -1;
}
else if(x==0||x==1)
f=1;
else f=fact(x-1)*x;
return (f);
}

不合法
float a,b ;
a=b=3.1;
这样是合法的
float a=3.1,b=3.1 ;
也是合法的

1.大体来看,这个表达式分两层。最外层的赋值表达式以及括号内的逗号表达式。

2.赋值表达式从右往左进行,同时括号的优先级高于赋值符号 = ,因此先计算括号内的逗号表达式。

3.在C的所有操作符中,逗号操作符优先级最低,而逗号操作符又是双目操作符,结合性从左往右。因此先执行逗号左侧的赋值表达式b = 2,然后在执行逗号右侧的表达式3 * 2.最终,逗号表达式的值就是最右侧的表达式3 * 2的值,6

4最终,括号内逗号表达式的值为6,执行最外层的赋值操作,y = 6.

结束

这个分开写的话就是这样.
b=2;
y=2*3;

y=(b=2,3*2)这要这么看,
y=后面是一个括号运算,
括号运算的运算结果是最后一个式子的结果~~
就是说括号运算(b=2,3*2)的结果为3*2,
所以y=2*3,
然后括号内的赋值语句为b=2~~


C语言中y=(b=2,3*2)怎么理解?谢谢各位大侠的帮助啊视频

相关评论:
  • 15320753040C语言中y=(b=2,3*2)怎么理解?谢谢各位大侠的帮助啊
    齐侄莉3.在C的所有操作符中,逗号操作符优先级最低,而逗号操作符又是双目操作符,结合性从左往右。因此先执行逗号左侧的赋值表达式b = 2,然后在执行逗号右侧的表达式3 * 2.最终,逗号表达式的值就是最右侧的表达式3 * 2的值,6 4最终,括号内逗号表达式的值为6,执行最外层的赋值操作,y = 6.结束...

  • 15320753040C语言中代码i=3\/2,3*2;结果为什么是1?
    齐侄莉因为赋值运算符的优先级高于逗号表达式。i=3\/2,3*2;就相当于(i=3\/2),3*2;最后i等于1,而整个逗号表达式的值是6。要将i赋值为6,得用括号:i=(3\/2,3*2);这些,可以用以下代码加以验证:include <stdio.h> int main(){ int i,n,arr[10]={0};n=1 ? i=3\/2,3*2 : 0;printf...

  • 15320753040学生信息管理系统(C语言版)
    齐侄莉{gotoxy(2,i);cprintf("%s",f[i-2]);}gettext(2,2,18,3,buf1);textbackground(0);textcolor(15);gotoxy(2,2);cprintf("%s",f[0]);y=2;key=get_key();while(key!=key_alt_x && key!=key_enter && key!=key_esc){if(key==key_up || key==key_down){puttext(2,y,18,y+1,...

  • 15320753040c语言 a=1 b=2 c=3 那a=b==c的结果是什么
    齐侄莉可以看成a=(b==c)括号中b==c是判断b是否等于c 根据之前的赋值b!=c 则判断为假为0 结果是a等于0

  • 15320753040c语言中运算符有哪几种,优先级顺序是怎样
    齐侄莉C语言中,运算符除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符。运算符的运算优先级共分为15 级,1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定...

  • 15320753040C语言t=(t=3,t*2)什么意思?
    齐侄莉子表达式t=3,t*2是一个逗号表达式,逗号表达式的值由最末项决定 表达式值为6 所以就是t=6 t最终赋值为6

  • 15320753040C语言中 b=a<3?3:2 是什么意思?
    齐侄莉b=a<3?3:2 的意义是,如果a的值小于3,那么把3赋值给b,否则把2赋值给变量b。?:是一个条件运算符。相当于:if(a<3)b=3;else b=2;

  • 15320753040c语言中a=3,b=2,c=1。a<=b+c的值为什么是0?
    齐侄莉结论:c语言中a=3,b=2,c=1。a<=b+c的值是1 分析:根据C语言的运算符优先级,加号(+)优先级高于小于等于(<=),所以 3<=2+1,即3<=3,结果为“真”,所以值是1。代码验证如图示:

  • 15320753040C语言中,b*=3是什么意思?
    齐侄莉在C\/C++中,操作符称为自反运算符(类似的还有+=、*=、\/=、&=、|=等等),由前后两个符号无间隔组合而成;其核心意义由前一个符号确定,完成左边的变量与右边的变量的运算关系,后面的=号是把运算结果赋给左边的目标变量的意思。

  • 15320753040c语言2**3==?的答案
    齐侄莉include <stdio.h> include <math.h> int main(){ int a=2;int b=3;printf("2**3的值是%f\\n",a,b,pow(a,b)); \\\\pow(a,b)即为a**b(a^b)return 0;}

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网