[英]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
是否在[ iMinAge
, imaxAge
]范圍內
它是這樣完成的: 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.