我发现一个很神奇的事情,关于用char得到真假判断并输出

egg347 2014-04-28 12:19:03
作为新手一路看书,看到关系运算符,书上竟然用 k=(i>j); (前面有int k),我试了一下可以输出结果,然后去问朋友A说是否bool变量一般省略bool声明?他否定了我,说原理不一样,变量是要占内存的。接着我另一个朋友B说让我试一下char就不一样了。然后我第一个测试的是 char a=(b<c); (其中b<c为假,根据我附图可看出是无输出的,或者输出的是空格?)。 于是我屁颠屁颠去跟A说,用char就没了啊。A说也有,字符是值,值不是字符。于是我又测试了 char a=(b>c); 和 char a=(b>c); 发现一个是空心笑脸,一个是实心笑脸。不明觉厉啊,于是很无聊做了这个测试- -。

代码如下:
#include<iostream>
using namespace std;

void main()
{
int i = 1,j = 2,k = 2,l = 3;
char m1,n1,o1,m2,n2,o2,m3,n3,o3;
m1 = (i < j);
n1 = (i > j);
o1 = (i = j);
m2 = (j < k);
n2 = (j > k);
o2 = (j = k);
m3 = (l < k);
n3 = (l > k);
o3 = (l = k);
cout << "1" << m1 << "\t";
cout << m2 << "\t";
cout << m3 << endl;
cout << "2" << n1 << "\t";
cout << n2 << "\t";
cout << n3 << endl;
cout << "3" << o1 << "\t";
cout << n2 << "\t";
cout << o3 << endl;
}


测试结果:使用char声明数据类型输出关系运算的真假时,
1、当用 < 关系运算符时,真输出空心笑脸,假无输出(还是输出空格?求指教下);
2、当用 > 关系运算符时,真输出空心笑脸,假无输出;
3、当用 = 关系运算符时,真无数,假输出实心笑脸。

另外,布尔变量推荐使用格式bool a = (b > c),不推荐直接赋值。(昂,因为我看书也有看到用double定义,也有赋值的,然后问了下朋友,于是得到如是回答)
...全文
238 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
egg347 2014-05-20
  • 打赏
  • 举报
回复
是楼主的疏忽。是混淆的赋值(=)和等号(==),抱歉。
mujiok2003 2014-04-28
  • 打赏
  • 举报
回复
引用
3、当用 = 关系运算符时,真无数,假输出实心笑脸。
这是赋值运算符啊
lm_whales 2014-04-28
  • 打赏
  • 举报
回复
引用 1 楼 baichi4141 的回复:
第一个建议:放弃这种毫无意义的尝试,去看书 第二个建议:分清=和==
++
baichi4141 2014-04-28
  • 打赏
  • 举报
回复
第一个建议:放弃这种毫无意义的尝试,去看书 第二个建议:分清=和==
CarlXie 2014-04-28
  • 打赏
  • 举报
回复
楼主只是证明了一件事情,那就是空心笑脸的ascii码是1. 果真是非常无聊的一件事情。 c语言,非0整型数值一般都可以当真。
qiminixi 2014-04-28
  • 打赏
  • 举报
回复
引用 8 楼 MBSHENG 的回复:
[quote=引用 4 楼 qiminixi 的回复:] char c=(1>2);//结果c=1,因为1>2为假(值1),ASCII的值1就是个笑脸.... char c=(1<2);//结果c=0,因为1<2为真(值0),ASCII的值0表示什么都没有,也就什么都不输出 。。。。
是不是反了[/quote] 反了
MBSHENG 2014-04-28
  • 打赏
  • 举报
回复
引用 4 楼 qiminixi 的回复:
char c=(1>2);//结果c=1,因为1>2为假(值1),ASCII的值1就是个笑脸.... char c=(1<2);//结果c=0,因为1<2为真(值0),ASCII的值0表示什么都没有,也就什么都不输出 。。。。
是不是反了
PDD123 2014-04-28
  • 打赏
  • 举报
回复
一般来说,关系运算,为真时,值为1,为假时,值为0。 非零我们都定为真,所以,为真时值为1就不知道是不是标准了。
只此冒泡君 2014-04-28
  • 打赏
  • 举报
回复
你可以看看 c++參考大全 第四版 前四章。 也許會明白很多!
「已注销」 2014-04-28
  • 打赏
  • 举报
回复
引用 4 楼 qiminixi 的回复:
char c=(1>2);//结果c=1,因为1>2为假(值1),ASCII的值1就是个笑脸.... char c=(1<2);//结果c=0,因为1<2为真(值0),ASCII的值0表示什么都没有,也就什么都不输出 。。。。
+1, 你把char修改为int输出就知道为啥了,结果永远只有0,1
qiminixi 2014-04-28
  • 打赏
  • 举报
回复
char c=(1>2);//结果c=1,因为1>2为假(值1),ASCII的值1就是个笑脸.... char c=(1<2);//结果c=0,因为1<2为真(值0),ASCII的值0表示什么都没有,也就什么都不输出 。。。。

65,207

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧