定义C+中语句的含义+; 我使用一些C++代码,我只是新手,我不明白这个条件语句对于真或假结果意味着什么。

定义C+中语句的含义+; 我使用一些C++代码,我只是新手,我不明白这个条件语句对于真或假结果意味着什么。,c++,C++,这就是我所拥有的: 字体包含与位图字体相关的值 for(j = 0; j < COUNT; j++) { for(i = 0; i < 8; i++) { Font[j][i] <<= 1; if((j != COUNT -1) && (Font[j + 1][i] & 0x80)) Font[j][i] |= 0x01; } } (j=0;j >代码> >代码> >代

这就是我所拥有的:

字体包含与位图字体相关的值

for(j = 0; j < COUNT; j++)   {
    for(i = 0; i < 8; i++)  {
        Font[j][i] <<= 1;
        if((j != COUNT -1) && (Font[j + 1][i] & 0x80))
            Font[j][i] |= 0x01;
    }
}
(j=0;j{ 对于(i=0;i<8;i++){
Font[j][i]如果
语句通用格式为

if (conditional_expression) ...
conditional_expression
是任何产生结果的表达式。结果0(
0
)为假,任何非零的都为真

如果
条件_表达式
很简单并且没有任何类型的比较,那么它会隐式地与零进行比较

int my_variable = ...;  // Actual value irrelevant for example

if (my_variable) { ... }
if (some_condition && my_variable) { ... }

上面的
if
语句隐式等于

if (my_variable != 0) { ... }
例如,对于复合条件,也会进行到零的隐式比较

int my_variable = ...;  // Actual value irrelevant for example

if (my_variable) { ... }
if (some_condition && my_variable) { ... }
等于

if (some_condition && my_variable != 0) { ... }
if((j != COUNT -1) && (Font[j + 1][i] & 0x80) != 0)

现在我们回到您的代码和条件:

if((j != COUNT -1) && (Font[j + 1][i] & 0x80))
通过与零的隐式比较,上述值等于

if (some_condition && my_variable != 0) { ... }
if((j != COUNT -1) && (Font[j + 1][i] & 0x80) != 0)
也就是说,
&
检查的右侧是
Font[j+1][i]&0x80
是否为零


至于
&
运算符本身,它是,本质上可以用来检查是否设置了位。对于代码,它检查与值
0x80
对应的位(八位)设置。

逻辑and运算符
&
和位and运算符
&
0x80
是二进制的
1000 0000
。这显然是一种手动位移位操作,应用于整个数组(手动进位溢出位)有可能详细解释它是如何工作的,但是你会发现花一些时间阅读你的C++书籍,尤其是解释如何<代码>和<代码> >代码> >代码> >代码> >代码> >代码>操作人员。这是一个非常清楚的例子。你自己学习的结果比仅仅在StActOffFooSo上给出答案的人要好得多,它不是C++书籍的替代品。<代码>字体[j] [i]=0x01;< /> >与代码>字体[j] [i] =字体[j] [i]记住,在C++ 0中,是错误的,任何其他值都是真的。谢谢Sam。1。我没有C++书,我从来没有尝试过或者尝试用C++来编码。我在网上选择了这个代码片段,因为它是为我需要的位移位器工作的。然后当我决定尝试修改时,我几乎找不到任何的RLE。vant提供了一些具体的信息来说明这是如何工作的,这样我就可以做出明智的判断,避免捕猎和啄食,尝试和错误。为什么总是有一些在线的人因为问问题而责骂别人,并且总是说基本上,去读这本书?或者重复问题…然后表现得像,不要来这里寻求帮助…谢谢你的时间。我现在对此有了更好的理解。