我有一個'鼠標讀取器'類,它可以將旋轉變成x,y,z。 (這是一種第一人稱視角的),但我不希望人直接在他的軸看,所以我這樣做:C++簡單如果語句不檢查?
if (!(Altitude + MouseCoordChange[1] > 269) && !(Altitude + MouseCoordChange[1] < 91))
{
我couted檢查,它是完美的,它阻止你太過分很多上下,但有些時候,它不到91和269,這怎麼可能?
謝謝
我有一個'鼠標讀取器'類,它可以將旋轉變成x,y,z。 (這是一種第一人稱視角的),但我不希望人直接在他的軸看,所以我這樣做:C++簡單如果語句不檢查?
if (!(Altitude + MouseCoordChange[1] > 269) && !(Altitude + MouseCoordChange[1] < 91))
{
我couted檢查,它是完美的,它阻止你太過分很多上下,但有些時候,它不到91和269,這怎麼可能?
謝謝
你已經愛上的,換句話說De Morgen's Law
犯規:!!!
一個& & B =(A || B)
我懷疑什麼你想要的是:
if (!((Altitude + MouseCoordChange[1] > 269) ||
(Altitude + MouseCoordChange[1] < 91)))
{
甚至更清楚:
if ((Altitude + MouseCoordChange[1] <= 269) &&
(Altitude + MouseCoordChange[1] >= 91)))
{
好吧,只是爲了調試,試試這個反邏輯。
if ( (Altitude + MouseCoordChange[1] < 91) && (Altitude + MouseCoordChange[1] > 269) )
{
//Do nothing here
}
else
{
//Do stuff here
}
範圍檢查常有發生這樣的模板將是有用:
template< typename _T > bool inrange(_T first, _T last, _T value)
{
return ((value>=first) && (value<=last));
}
你的情況:
if (inrange(91, 269, (Altitude + MouseCoordChange[1]))
{
//is in the range - do something
}
else
{
//is outside the range - do something
}
嗯,我得到一個錯誤,如果我使用該功能: –
沒有等待,我的壞,我需要浮動到第一個值的inrange。 –
@MiguelP:你得到什麼錯誤?編譯器應該從參數中推斷出類型,所以如果它是一個類型錯誤,嘗試將最後一個parm轉換爲int,就像這樣:'(int)(Altitude + MouseCoordChange [1])' – slashmais
你爲什麼寫'如果((A> b))'?如果(a <= b)'直接...' – LihO
你寫了'if(!(a> 269)&&!(a <91))'......如果它應該是範圍檢查,簡單地說:'if(a> = 91 && a <= 269)' – LihO