Имеем содержимое файла testbool.cpp
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
bool foo = 7 > 0;
cout << foo << endl;
bool bar = 7.5;
cout << bar << endl;
bool baz = "dont't foo";
cout << baz << endl;
return 0;
}
den@haruhi:/tmp$ g++ -o testbool testbool.cpp
den@haruhi:/tmp$ ./testbool
1
1
den@haruhi:/tmp$ g++ -Wall -o testbool testbool.cpp
den@haruhi:/tmp$
den@haruhi:/tmp$ g++ -std=c++0x -Wall -o testbool testbool.cpp
den@haruhi:/tmp$
Ничего, ни одного предупреждения несмотря на явное несоответствие типов.
Код на Java:
public class Main
{
public static void main(String args[])
{
boolean foo = 7.5 < 0;
System.out.println(foo);
boolean baz = "Хурдыбурды";
System.out.println(baz);
}
}
den@haruhi:/tmp$ javac Main.java
Main.java:7: incompatible types
found : java.lang.String
required: boolean
boolean baz = "Хурдыбурды";
^
1 error
И как это понимать? Где «логический тип» в С++?