2017-09-13 74 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 這正好爲循環

希望我給你的答案在第一循環