请问这个C语言程序有什么问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 21:44:19
#include <stdio.h>
#include <stdlib.h>

void main(int argc, char *argv[])
{
float a,b,c;
char d;
scanf("%f,%c,%f",&a,&d,&b);
if(d =='+',c=a+b)
printf("%f",c);

else if(d =='-',c=a-b)
printf("%f",c);

else if(d=='*',c=a*b)
printf("%f",c);

else if(d=='/',c=a/b)
printf("%f",c);
system("PAUSE");
return 0;
}

if(d =='+',c=a+b) 为什么用这种形式呢 逗号语句从左到右顺序执行

不管d等于还是不等'+' 都会执行 c=a+b

直接写成if(d=='+') c=a+b; 这样看起来明了简单

#include <stdio.h>
#include <stdlib.h>
void main(int argc, char *argv[])
{
float a,b,c;
char d;
scanf("%f%c%f",&a,&d,&b);
if(d =='+'){
c=a+b;
}
if(d =='-'){
c=a-b;
}
if(d=='*'){
c=a*b;
}
if(d=='/'){
c=a/b;
}
printf("%f",c);
system("PAUSE");
return 0;
}

if(d =='+',c=a+b)

,运算符取最后的值,所以 (c= a+b)永真,造成后续语句无论如何不会执行,一楼的可以

“逗号运算符”是顺序执行的,以执行最后一条语句作为最终结果。

你的程序的判断语句里面,根本就不会管你d是什么运算符号,应当把c,a,b的运算放到if外面。

你的if判断语句有问题,逗号运算是看逗号后面的表达式的值的。
c=a+b 是个赋值语句,值为c的值 只要C不为零 ,改程序永远执行+运算的。

修改后的代码如下,注意输入格式!
#include <stdio.h>
#include <stdlib.h>

int main(int argc, ch