为什么 if((a*a+b*b>c*c)&&(b*b+c*c>a*a)&&(c*c+a*a>b*b))这里一定要用&&而不是||呢?求大佬解答
#include<stdio.h>
int main()
{
int a,b,c;
printf("请输入三角形的3条边: \n");
scanf("%d,%d,%d",&a,&b,&c);
if((a+b>c)&&(b+c>a)&&(a+c>b))
{
if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
{
printf("这个三角形为直角三角形\n");
}
if((a*a+b*b>c*c)&&(b*b+c*c>a*a)&&(c*c+a*a>b*b))
{
printf("这个三角形为锐角三角形\n");
}
if((a*a+b*b<c*c)||(a*a+c*c<b*b)||(b*b+c*c<a*a))
{
printf("这个三角形位钝角三角形\n");
}
}
if((a+b<c)||(a+c<b)||(b+c<a))
{
printf("这三条边不能组成三角形.\n");
}
return 0;
}
区别如下:
1、运算符性质不同。
&是一个位运算符。
&&是一个逻辑运算符。
2、作用不同。
&是将两个二进制的数逐位相与,结果是相与之后的结果。
&&就是判断两个表达式的真假性,只有两个表达式同时为真才为真,有一个为假则为假,具有短路性质。
3、用途限制。
&除了是一个位运算符,也是取地址符。
&&就是一个单纯的逻辑运算符,没有任何其他含义。
发展历史
C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普逊和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。
为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,诞生了第一个完备的C标准,简称“C89”,也就是“ANSI C”,截至2020年,最新的C语言标准为2018年6月发布的“C18”。