1
我使用XLookupString將一個關鍵事件映射到ASCII字符串,keysym和ComposeStatus。在位操作中使用'char'變量
int XLookupString(event_structure, buffer_return, bytes_buffer, keysym_return, status_in_out)
XKeyEvent *event_structure;
char *buffer_return; /* Returns the resulting string (not NULL-terminated). Returned value of the function is the length of the string. */
int bytes_buffer;
KeySym *keysym_return;
XComposeStatus *status_in_out;
這裏是我的代碼:
char mykey_string;
int arg = 0;
------------------------------------------------------------
case KeyPress:
XLookupString(&event.xkey, &mykey_string, 1, 0, 0);
arg |= mykey_string;
但使用位操作「字符」變量,符號擴展會產生意想不到的效果。 我可以防止這個?
感謝
從本質上講,位運算是基於無符號整數。所以建議你應該使用unsigned char和unsigned int來代替。順便說一句,VC++默認將char視爲未簽名,您可以通過編譯器選項指定char類型的符號。 – xmllmx