为什么我的cout输出没有任何显示呢??????

七十二骑士 2020-01-28 06:12:29
具体代码如下所示

#include "iostream"

using namespace std;


int main() {
unsigned char c = -1;
char d = 'a';
cout << c << d << endl;
//printf("%d %c", c, d);

return 0;
}

但是程序如下图:


有啥解决办法嘛???
...全文
3421 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Feriii 2020-01-29
  • 打赏
  • 举报
回复 1
首先楼主的这一行代码是存在缺陷的,很明显,楼主声明了一个无符号的char类型变量但是却使用一个整形字面值-1为其初始化,但是c++语言对于这种情况会进行隐式的类型转换,即就是在初始化过程中初始值转换为变量类型,那么在这里编译器就会认为-1也就是10000001为129,在ascii表中没有定义129对应的字符形式,那么显而易见要么输出来是乱码要么进行错误输出,楼主这里应该进行的是错误输出导致std::cout没有进行正常返回而导致后面的字符'a'也没有输出,这取决于编译器的不同。建议,楼主尝试将字符集换成宽字符集,或者使用Unicode字符集尝试,但是对于Unicode字符集来说不能设置signed或者unsigend。
GKatHere 2020-01-29
  • 打赏
  • 举报
回复
引用 4 楼 七十二骑士 的回复:
#include "iostream"

using namespace std;


int main() {
	//unsigned char c = -1;
	char d[20];

	cin >> d;
	cout << d << d;
	//printf("%d %c", c, d);

	return 0;
}
代码没问题,只不过要先输入
寻开心 2020-01-29
  • 打赏
  • 举报
回复
中文可以显示
具体显示什么要看编码的格式了

c++是支持多种编码格式的

另外, -1是0xff不是129
七十二骑士 2020-01-28
  • 打赏
  • 举报
回复
引用 2 楼 寻开心 的回复:
-1按照char类型来理解就是0xFF, 它和字母a组合起来, 很可能会被认为是一个不可见的字符了。 cout是支持输出中文的,当使用这种ascii数值大于0x7f的字符组合的时候, 很可能是变成了不可见的字符了
那再问一下,中文是不是也显示不出来??代码:
#include "iostream"

using namespace std;


int main() {
	//unsigned char c = -1;
	char d[20];

	cin >> d;
	cout << d << d;
	//printf("%d %c", c, d);

	return 0;
}
寻开心 2020-01-28
  • 打赏
  • 举报
回复
-1按照char类型来理解就是0xFF, 它和字母a组合起来, 很可能会被认为是一个不可见的字符了。
cout是支持输出中文的,当使用这种ascii数值大于0x7f的字符组合的时候, 很可能是变成了不可见的字符了
寻开心 2020-01-28
  • 打赏
  • 举报
回复
输出了不可见的字符了吧
-1 是0xff在这里, 属于不可见字符。

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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