int main ( )
{
int a=0,b=0, c;
if (a>b) c=1;
else if (a=b) c=0;
else c=-1;
printf ("%d\n" ,c);
return0;
}
else if(a==b)
不是else if(a=b)
a=b是赋值语句,a==b才是判断是否相等
1、C语言中赋值运算符也是有返回值的,其返回值是赋值运算执行后, 赋值号左边的值
2、举例,比如 a = 1, b = 2; 那么执行 a = b 后,a = 2, b = 2;而 a = b 这个语句本身会返回 a 的值,也就是 a = b 的返回值是 2
3、为什么赋值运算会有返回值?原因是为了能够进行链式赋值,比如 c = 5; a = b = c 的操作, 语句 a = b = c 实际上是两个步骤,第一步:计算 b = c 的值,上面说过,也就是 运算后 b 的值,为 5;第二步:计算 a = (b = c 这个表达式的返回值,第一步计算出来为 5),因此第二步也就是 a = 5
看下代码:
输出结果如下:
if里面应该是等号,==
改正如下:
int main ( )
{
int a=0,b=0, c;
if (a>b) c=1;
else if (a==b) c=0;
else c=-1;
printf ("%d\n" ,c);
return0;
}
else if(a=b),因为a和b都是0,所以判断表达式为假,执行else语句,输出-1
a==b,才是正确的相等条件判断语句