为了账号安全,请及时绑定邮箱和手机立即绑定

我对这条语句的理解是这样的,请高手指点是否有理解错误。

我对这条语句的理解是这样的,请高手指点是否有理解错误。

C
神不在的星期二 2022-11-18 21:17:05

if ((wParam = (WPARAM) CharUpper ((TCHAR *) wParam)) == VK_RETURN)
首先(TCHAR *) wParam里的wParam是子窗口ID(被赋予ASCII码的十进制100,也就是d)那么这里的强制转换类型(TCHAR *) 是否就把100 变成'd'?然后用CharUpper 函数把d转化为大写的D,然后再用 (WPARAM)强制类型转换把大写D 再换成相应的ASCII码68? 然后再把68赋给wParam 然后再做VK_RETURN的对比?
还有种情况,比如CharUpper ()里放入的是个'=' 号呢? 或者是回车呢? 那么这个转换会如何?

查看完整描述

2 回答

?
ibeautiful

TA贡献1706条经验 获得超5个赞

应该是你说的那样,如果输入‘=’相信charUpper函数会报错的,这条语句不会顺利执行的

查看完整回答
反对 回复 2022-11-24
?
ITMISS

TA贡献1543条经验 获得超8个赞

我给你测试了一下
 
#include 
#include 
using namespace std;
int main()
{
 char testChar='a';
 LPTSTR s=CharUpper((TCHAR *)testChar);
 char b=(WPARAM)s;
 cout<<b;
 system("pause");
 return 0;
}
输出A;当testChar是‘=’时,输出还是‘=’
 
经测试发现只有当时小写字母时,输出才是大写字母,其他的字符不会发生变化


查看完整回答
反对 回复 2022-11-24

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信