读书人

两个基础有关问题 编译和布尔

发布时间: 2012-02-16 21:30:36 作者: rapoo

两个基础问题 编译和布尔

#include <iostream>
using namespace std;
int main()
{
int a=5,b=8;
int c=7,d=8;
cout<<boolalpha<<a==c<<b==d<<endl;
system"(pause");
return 0;
}
编译不过去,是仿造cout << boolalpha << ( str1==str2 ) << endl;//如果str1==str2,则输出true,不等输出false.


char a=true; cout结果是0,(char a=true 结果是空。)
将布尔赋给其它的如int,float等都是1,为什么独它为0,编译能通过。
没发现教程提到是否该将布尔型赋给字符变量。




[解决办法]
拆开呢?
cout<<boolalpha<<(a==c)<<endl;
cout<<boolalpha<<(b==d)<<endl;
[解决办法]
int main()
{
int a=5,b=8;
int c=7,d=8;
cout<<boolalpha<< (a==c) << (b==d) <<endl;
system("pause");
return 0;
}

[解决办法]
你那是什么编译器?应该是编译器的问题,我这VS2008的编译器赋给char也是1
[解决办法]
将 布尔赋值给 CHAR 是未定义行为 不同编译器不一样的
[解决办法]

探讨
第一个问题解决了,最早自己也加了小括号,未成功,便又改回去了,现在发现是自己的"(pause"的打字低级错误,二楼三楼的方法都对,多谢了,现在只剩第二个问题待解答了。
不好意思再附加一个问题,将整型显式转换为字符型,自己测试:
int jj=123;
char kk=(char)jj;
cout<<jj<<"看看结果怎样"<<kk<<endl;
jj=123时会正确显示,j……

[解决办法]
超出char的表示范围,int强制转换为char会被截断。
[解决办法]
感觉楼主最好不要那么用。

读书人网 >C++

热点推荐