C-如果其他条件和操作员


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

首先,上述代码的输出是hi!。应该打招呼,但是如何打印嗨?

if语句

中的条件
if(i=5 && j>5)

等于

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

AS 5不等于0,而J的确大于5,然后表达式( 5 && j>5 )评估为1,并分配给变量i

来自C标准(6.5.16分配运算符(

3一个分配操作员在指定的对象中存储一个值 左操作数。分配表达式具有左侧的值 作业后的操作数 ...

因此,由于变量i的值等于1,因此执行IF条件。

看来您的意思是

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

考虑到,根据C标准,无参数的功能主函数应像

一样声明。
int main( void )

i=5是一个完全有效的表达式,即使不是平等测试。该分配产生的值不是零,因此条件仍然是正确的。

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

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

尝试输出每个变量(i,j(以查看发生了什么

最新更新