Wie ist das möglich??
-
nein, in C++ ist bool ein Builtin Type! (und der Code soll C++ sein, auch wenn er extrem wie C aussieht :))
In C99 ist bool ein typedef (auf _Bool)
-
gcc macht auch nur 1er draus. Was fürnen komischen Compiler benutzt du
-
Dev-C++ 4.9.8.0:
#include <iostream> #include <conio.h> int main() { bool test = false; for( int i=0; i<10; ++i ) { test += true; std::cout << i << " count my boolean is: " << test << std::endl; } getch(); }
output:
0 count my boolean is: 1
1 count my boolean is: 1
2 count my boolean is: 1
3 count my boolean is: 1
4 count my boolean is: 1
5 count my boolean is: 1
6 count my boolean is: 1
7 count my boolean is: 1
8 count my boolean is: 1
9 count my boolean is: 1
-
E.H: Das brachte jetzt nicht viel, DevC++ verwendet doch auch die gcc, hm?
-
Ne standardmäßig den MinGW, aber das ändert ja nicht viel
-
TriPhoenix schrieb:
gcc macht auch nur 1er draus. Was fürnen komischen Compiler benutzt du
Er benutzt den Borland C++Builder.
-
bool ist ein signed byte oder ?
AFAIK ist alles ungleich 0 == true und == 0 eben false
-
Jo, meiner gibt 3 Warnungen aus:
warning C4804: '+=' : unsafe use of type 'bool' in operation
warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
warning C4508: 'main' : function should return a value; 'void' return type assumed...und zeigt alles Einsen an!
-
michaelwitzik schrieb:
Jo, meiner gibt 3 Warnungen aus:
warning C4804: '+=' : unsafe use of type 'bool' in operation
warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
warning C4508: 'main' : function should return a value; 'void' return type assumedWobei die letzte Warnung nicht gerechtfertigt ist.
-
vermutlich speichert der BCB intern bool als long bzw. int, weil damit x86er besonders schnell arbeiten können. Nur wurde der += Operator für bool nicht richtig unschändlich gemacht. Bei printf tritt der Fehler eben auf, weil der Typ ja explizit angegeben wird (würde mich wundern, wenn das beim operator<<(ostream,bool) passieren würde)