2013-08-12 193 views
2

我有這樣的程序:奇怪的行爲()

#include <iostream> 
#include <conio.h> 
using namespace std; 

int main() 
{ 
    for (int i = 0; i < 10; i++) 
    { 
     cout << int (_getch()) << endl; 
    } 
    _getch(); 
    return 0; 
} 

如果我按等數字,字母鍵和回車鍵,則顯示一個整數(每循環的迭代)。但是,如果按下插入,刪除或箭頭之類的鍵,則會一次顯示兩個整數。

爲什麼會出現這種情況?

+1

由於某些密鑰發送兩個密鑰。 –

+0

'conio.h'完全沒有必要。 – chris

+0

它們是否顯示在同一行上?或者是循環只做兩次迭代? 如果是後者(並且第一個int爲0),這對於特殊鍵是完全正常的。 – Alexander

回答

3

_getch()

當讀取一個功能鍵或箭頭鍵,每個功能必須被調用兩次;

第一次調用返回0(對於F1-F10)或0xE0(224)(對於其他),第二次調用返回實際的密鑰代碼。