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

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 ()里放入的是个'=' 号呢? 或者是回车呢? 那么这个转换会如何?

神不在的星期二
浏览 163回答 2
2回答

ibeautiful

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

ITMISS

我给你测试了一下 &nbsp; #include&nbsp; #include&nbsp; using&nbsp;namespace&nbsp;std; int&nbsp;main() { &nbsp;char&nbsp;testChar='a'; &nbsp;LPTSTR&nbsp;s=CharUpper((TCHAR&nbsp;*)testChar); &nbsp;char&nbsp;b=(WPARAM)s; &nbsp;cout<<b; &nbsp;system("pause"); &nbsp;return&nbsp;0; } 输出A;当testChar是‘=’时,输出还是‘=’ &nbsp; 经测试发现只有当时小写字母时,输出才是大写字母,其他的字符不会发生变化
打开App,查看更多内容
随时随地看视频慕课网APP