“~”这个符号在Visual C++6.0中的含义

几罗星人 2011-07-18 12:41:00
是这样的,我看着书照做,书中出现了这样一句代码:

//去掉窗口的最小化按钮
cs.style&=~WS_MINIMIZEBOX

这个没问题,组建后成功了,但是我好奇地将“~”符号去掉,变成这样:

cs.style&=WS_MINIMIZEBOX

组建后发现最大化,最小化,和关闭按钮都消失了。然后我又试了以下的代码:

cs.style&=WS_MAXIMIZEBOX

效果同上,请问“~”这个符号在Visual C++ 6.0里有什么含义
...全文
186 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
几罗星人 2011-07-19
  • 打赏
  • 举报
回复
哦,5楼您的意思我差不多理解了,我再理清一下思路,因为我以前是学VB的,现在改行了,到了C++的阵营里。隔行如隔山啊~~,谢谢了。
至善者善之敌 2011-07-19
  • 打赏
  • 举报
回复
就是取反,如果写过单片机程序,会发现有大量的这样的符号
waxilo1988 2011-07-19
  • 打赏
  • 举报
回复
慢慢发现问题 学到东西了。。。
無_1024 2011-07-19
  • 打赏
  • 举报
回复
取反~
野男孩 2011-07-19
  • 打赏
  • 举报
回复
取反啊。。。。lz你这是属于位运算完全不清楚。

WS_MINIMIZEBOX是个32bit整型值,如果取反,那么其他所有位都是1,就它自己是0.
然后再和现在的style值cs.style做个&运算,如果原来这个位是0,那不变。如果原来是1,那么变0,相当于去掉了最小化按钮的标志。其他位都是1,不影响&运算的结果.

如果是cs.style &= WS_MINIMIZEBOX; 那就是cs.style的所有其他标志全部置0,只有最小化按钮,如果原来有,那就继续有,没有的话,就啥都没有。

窗口的style就是一个一个的bit指明的,所有的bit操作都会影响窗口的特征的。


几罗星人 2011-07-19
  • 打赏
  • 举报
回复
其实我也想到了取反,只是不明白为什么会出现最大化,最小化和关闭按钮都隐藏的效果,谁能想想为什么会出现这种效果?
几罗星人 2011-07-18
  • 打赏
  • 举报
回复
我原本也是怎么想的,但是如果是取反的话,为什么

cs.style&=WS_MINIMIZEBOX

语句不是没变化(最小化按钮本身就是默认显示的,在使用语句显示一次相当于没变化,个人理解),而是将最大化,最小化和关闭按钮都隐藏了呢?
mstlq 2011-07-18
  • 打赏
  • 举报
回复
位运算符C语言提供了六种位运算符:

  & 按位与
  | 按位或
  ^ 按位异或
  ~ 取反
  << 左移
  >> 右移


http://www.yuanma.org/data/2006/1121/article_1840.htm
pathuang68 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jiluoxingren 的回复:]

我原本也是怎么想的,但是如果是取反的话,为什么
C/C++ code

cs.style&=WS_MINIMIZEBOX


语句不是没变化(最小化按钮本身就是默认显示的,在使用语句显示一次相当于没变化,个人理解),而是将最大化,最小化和关闭按钮都隐藏了呢?
[/Quote]
在这里~肯定是取反。

你试试输出WS_MINIMIZEBOX和~WS_MINIMIZEBOX看看是什么结果。

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧