看书上有这样一段程序:
就是Font newFont=new Font(rtfText.SelectiongFont,
                          (trfText.SelectionFont.Bold?
                           trfText.SelectionFontm.Style&~FontStyle.Bold:
                           trfText.SelectionFontm.Style|FontStyle.Bold))
意思就是判断所选择的字体是不是黑体,如果是的话执行trfText.SelectionFontm.Style&~FontStyle.Bold,取消黑体
不是的话执行trfText.SelectionFontm.Style|FontStyle.Bold,将字体变成黑体。我的问题是trfText.SelectionFontm.Style&~FontStyle.Bold中先对FontStyle.Bold按位求补,然后与trfText.SelectionFontm.Style按位逻辑与,
是怎么进行运算,得到一个不是黑体的字体格式的呢?而后面 trfText.SelectionFontm.Style|FontStyle.Bold又是怎么能得到黑体的字体格式的呢?问题的核心是&和|两个逻辑运算符在字体判断中起的什么作用,怎样运算的?麻烦知道的不吝赐教,现在这谢过~~~

解决方案 »

  1.   

    首先,SelectionFont拼写错了,希望你的书上不是这样写的 :)你的问题就是简单的位操作问题,和字体是否黑体关系不大。
    VC当中每天都会遇到很多这样的操作,搞VC的几乎以此为生。X & ~A 这个东东的功能,就是一个‘过滤’,用A中的所有1的位去‘过滤’X
    X | A 这个东东的功能,就是一个‘补充’,不管X之前有没有A中的置位,确保X中的这些位在变换后为1.可以把A理解为一个Checkbox,
    X & ~A就是去掉勾
    X | A就是打勾希望能明白。不明白就强记,慢慢的就明白了。