终端显示无输出(空白)
// if the ages of 3 people are put telling which one is youngest//
#include<stdio.h>
int main()
{
int a1,a2,a3;
printf("enter the age of ram,shyam and ajay");
scanf("%d,%d,%d",&a1,&a2,&a3);
if(a1>a2>a3)
printf("%d,%d,%d",a1,a2,a3);
if(a3>a2>a1)
printf("%d,%d,%d",a3,a2,a1);
if(a2>a1>a3)
printf("%d,%d,%d",a2,a1,a3);
if(a2>a3>a1)
printf("%d,%d,%d",a2,a3,a1);
if(a1>a3>a2)
printf("%d,%d,%d",a1,a3,a2);
if(a3>a1>a2)
printf("%d,%d,%d",a3,a1,a2);
return 0;
}
我不确定你是否应该在if语句中写3个表达式,如1>2>3,如果我错了,请纠正我
3条答案
按热度按时间fivyi3re1#
是的!伙计,你不能这样使用声明:**if(a1>a2>a3)**你需要像这样写它们if(a1>a2 && a1>a2)还有一件事你需要在这个程序中纠正,你需要检查一次条件,对于一个变量,或者你也可以看一下函数,你可以很容易地做到这一点,而不需要在一些行中写那么多代码,你可以解决它。
sg3maiej2#
根据C标准(6.5.8关系运算符)
6每个运算符<(小于)、>(大于)、<=(小于或等于)和>=(大于或等于)如果指定的关系为真,则产生1,如果为假,则产生0。结果的类型为int。
并且运算符从左到右求值,
所以如果像这样的陈述
相当于
根据
a1
是否大于a2
,您有两个或
相反,您需要在表达式中包含逻辑AND运算符,如
但如果你这样做,程序可以输出什么,如果至少有两个年龄相等对方。
在
scanf
的调用中最好去掉转换说明符之间的逗号。让用户将输入年龄分隔的空格一样,例如
或
如果你想按降序输出年龄,你可以写,例如
czq61nw13#
那条线
不会做你想做的事根据rules of operator precedence and associativity,该表达式等效于以下内容:
子表达式
(a1>a2)
将计算为0
(false)或1
(true)。因此,整个表达式等效于或:
您需要的内容如下:
因为根据上面提到的规则,
&&
运算符的优先级低于>
运算符,所以可以不带括号地写: