30/09/2018, 17:18

Hỏi về mã của bàn phím

while(1)
{
	char c=getch();
	cout<< (int)c<<endl;
}

e dùng cái mã trên để ghi ra giá trị của mã bàn phím ,lúc e ghi các phím a,b,c thì nó ra mã chỉ có 1 số như 97,96 … nhưng khi e nhấn phím mũi tên hay delete ,end thì nó lại ra tận 2 số

vd phím trái : -32
77

phím phải : -32
75

cho e hỏi là cái -32 là số gì ạ ,sao chỉ các phím mũi tên hay trên phím mũi tên là có vậy

... viết 19:20 ngày 30/09/2018

Mình cũng không rõ. Hồi trước mình cũng có test để tìm mã phím kiểu này và cũng bị tương tự.
Để kết quả test ra 1 số thì bạn nên dùng printf trong C để làm.

viết 19:31 ngày 30/09/2018

mỗi lần bấm phím thì phím mũi tên đẩy 2 ký tự lên buffer thay vì 1 ký tự như mấy phím bình thường.

phím trái thì đẩy 2 ký tự là 224 và 77, phím phải thì 224 và 75. getch() lấy 1 ký tự trực tiếp từ buffer nên sẽ lấy 224 trước rồi tới 77. 224 vượt quá giới hạn của char (max là 127) nên bị overflow thành số âm (-32).

vd bấm 3 chữ a rồi 1 chữ b rồi 2 phím trái thì lúc in ra thì in ra 8 số: 97 97 97 98 -32 77 -32 77 (do 224 vượt quá giới hạn của char như đã nói ở trên), mặc dù chỉ nhấn 6 phím.

stackoverflow.com
qwertz

getch and arrow codes

c, character, decimal, arrow-keys
asked by qwertz on 03:18PM - 05 May 12
Bài liên quan
0