簡體   English   中英

如果缺少邏輯運算符,則求值順序

[英]Order of evaluation if logical operator is missing

以下是C程序。

我除外,否則可以進入。

#include<stdio.h>
void main()
{
    int iAge = 10;
    int iMinAge = 1;
    int iMaxAge = 18;

    if(iMinAge >= iAge <= iMaxAge)
    {
        printf("\n in if...");
    }
    else
    {
        printf("\n in else...");
    }
}

評價的順序是什么?

iMinAge >= iAge <= iMaxAge 

相當於

(iMinAge >= iAge) <= iMaxAge

因此

0 <= iMaxAge

因此,它被評估為是。

if(iMinAge >= iAge <= iMaxAge)在C語言中不起作用(無論如何都不是您想要的方式)。
如果要測試iAge是否在[ iMinAgeimaxAge ]范圍內

它是這樣完成的: if ( iAge >= iMinAge && iAge <= iMaxAge)

首先,關系算子的關聯性是從左到右。 現在,在if循環中

if(iMinAge >= iAge <= iMaxAge)

根據關聯性從左到右開始執行,因此首先評估iMinAge> = iAge,現在返回0

0<=iMaxAge

這是true(1),因此如果執行了其中的語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM