2017-09-13 45 views
-3
// c program to represent boolean values 

#include<stdio.h> 

int main() 
{ 
    _Bool boolvar=0; 
    int i; 

    printf("the value of _Bool is"); 

    for(i=0;i<5;i++) 
    { 
     printf("boolvar=%i\n",boolvar); 
     boolvar++; 
    } 
    printf("\n"); 

    for (i=5;i<10;i++) 
    { 
     printf("boolvar=%i\n",boolvar); 
     boolvar--; 
    } 
} 

我做了这个程序,得到1 1 1 1 1为我的第一个循环和第二个循环。为什么这个布尔值在第二个循环中波动,而我第一次只得到11111?这是怎么布尔值更改

+0

对不起实际上它是boolvar ++不boolvar-- –

+0

请编辑此所以它体现在递减_Bool问题 – Mitchel0022

+1

C++中的值看起来没有被定义,这意味着你看到的行为很可能(非常)依赖于你的C编译器:htt电话号码://en.cppreference.com/w/cpp/language/operator_incdec – Peter

回答

0

在C++ 17之前的C++版本中,++运算符的一个现在不推荐使用的特性是将布尔值设置为true;这似乎是你的第一个循环发生了什么(修复之后)。 - 运算符似乎没有正式定义为布尔值,但我猜测你的C编译器的第二个循环是简单地使用底层整数类型的奇偶校验(偶对奇)来决定布尔值值是真或假。请参阅:http://en.cppreference.com/w/cpp/language/operator_incdec

0

对于布尔增量类似于正在执行的操作或操作,因此每次都是一次。

而在第二循环第一次打印递减BOOL将为1 下一页1-1 = 0接着 0-1 = -1(由于布尔是单字节和没有符号位它将忽略符号),所以它将再次打印1 这正好为循环

希望我给你的答案在第一循环