条件 Returns 即使不是也为真
Condition Returns True even if it isn't
所以我正在编写一个 C 程序来检查三角形是不等边三角形、等腰三角形还是等边三角形。
但是每当我将三个边等同为不相等时,它仍然是 returns 1(参见第 16 行的条件)。
// Write a C program to check whether the triangle is equilateral, isosceles or scalene triangle
#include <stdio.h>
int main()
{
int side1, side2, side3;
printf("Enter side 1: ");
scanf("%d", &side1);
printf("Enter side 2: ");
scanf("%d", &side2);
printf("Enter side 3: ");
scanf("%d", &side3);
if (((side1+side2)>side3)&&((side2+side3)>side1)&&((side1+side3)>side2))
{
if (side1!=side2!=side3)
{
printf("%d\n", side1!=side2!=side3);
if ((side1==side2)||(side1==side3)||(side2==side3))
{
printf("Triangle is isosceles!");
}
else
{
printf("Triangle is scalene!");
}
}
else
{
printf("Triangle is equilateral!");
}
}
else
{
printf("Input sides doesn't make a triangle!");
}
printf("\n");
}
karthik@cosmic:~/.../Binaries (compiled on Linux)$ ./scalene\ equilateral\ or\ isosceles
Enter side 1: 34
Enter side 2: 34
Enter side 3: 34
1
Triangle is isosceles!
我不明白为什么要打印“1”或者为什么该行循环有效。
有人请帮助我!
你正在打印你在 if
条件中使用的相同表达式,所以如果 if
表达式是 true
,它显然会打印 1
..
if (side1!=side2!=side3)
{
//If you got here, then side1!=side2!=side3 returns 1.
printf("%d\n", side1!=side2!=side3);
此外,side1 != side2
将 return 1
或 0
。然后检查 (1 or 0) != side3
是否可能为真,以及 return 1. 如果启用警告,编译器可能会抛出警告..
你可能想要side1 != side2 && side1 != side3 && side2 != side3
所以我正在编写一个 C 程序来检查三角形是不等边三角形、等腰三角形还是等边三角形。 但是每当我将三个边等同为不相等时,它仍然是 returns 1(参见第 16 行的条件)。
// Write a C program to check whether the triangle is equilateral, isosceles or scalene triangle
#include <stdio.h>
int main()
{
int side1, side2, side3;
printf("Enter side 1: ");
scanf("%d", &side1);
printf("Enter side 2: ");
scanf("%d", &side2);
printf("Enter side 3: ");
scanf("%d", &side3);
if (((side1+side2)>side3)&&((side2+side3)>side1)&&((side1+side3)>side2))
{
if (side1!=side2!=side3)
{
printf("%d\n", side1!=side2!=side3);
if ((side1==side2)||(side1==side3)||(side2==side3))
{
printf("Triangle is isosceles!");
}
else
{
printf("Triangle is scalene!");
}
}
else
{
printf("Triangle is equilateral!");
}
}
else
{
printf("Input sides doesn't make a triangle!");
}
printf("\n");
}
karthik@cosmic:~/.../Binaries (compiled on Linux)$ ./scalene\ equilateral\ or\ isosceles
Enter side 1: 34
Enter side 2: 34
Enter side 3: 34
1
Triangle is isosceles!
我不明白为什么要打印“1”或者为什么该行循环有效。 有人请帮助我!
你正在打印你在 if
条件中使用的相同表达式,所以如果 if
表达式是 true
,它显然会打印 1
..
if (side1!=side2!=side3)
{
//If you got here, then side1!=side2!=side3 returns 1.
printf("%d\n", side1!=side2!=side3);
此外,side1 != side2
将 return 1
或 0
。然后检查 (1 or 0) != side3
是否可能为真,以及 return 1. 如果启用警告,编译器可能会抛出警告..
你可能想要side1 != side2 && side1 != side3 && side2 != side3