if else条件与和运算符

时间:2017-05-29 20:51:40

标签: c if-statement output operators

void main()
{
int i=4,j=12;
if(i=5 && j>5)
    printf("Hi!");
else
        printf("Hello!");
}

首先,上面代码的输出是Hi!。据我所知它应该显示语法错误,因为i = 5是一个assingment运算符而不是i == 5,如果i == 5那么它也是假的并且应该打印Hello,但是怎么打印你好?

3 个答案:

答案 0 :(得分:5)

if语句中的条件

if(i=5 && j>5)

相当于

if( i = ( 5 && j>5 ))

由于5不等于0且j确实大于5,因此表达式( 5 && j>5 )的计算结果为1并分配给变量i

来自C标准(6.5.16分配操作员)

  

3赋值运算符将值存储在指定的对象中   左操作数。 赋值表达式的值为left   作业后的操作数 ...

因此,当变量i的值等于1时,则执行if条件。

看来你的意思是

if(i==5 && j>5)
   ^^^^

考虑到根据C标准,没有参数的函数main应声明为

int main( void )

答案 1 :(得分:0)

i=5是一个非常有效的表达式,即使它不是对相等性的测试,也是有条件的。该赋值产生的值不为零,因此条件仍为真。

答案 2 :(得分:0)

您可以在条件参数中分配变量,例如

While((a=b)!=null){
    ...
)

尝试输出每个变量(i,j)以查看最新情况