【问题标题】:Conversion from int to char failed and console prints weird symbol从 int 到 char 的转换失败,控制台打印出奇怪的符号
【发布时间】:2020-09-18 08:58:32
【问题描述】:

我遇到了一个奇怪的问题,我不知道如何解释。当我运行此代码时,它会打印此符号 -> 。 这是我的代码:

#include <iostream>

int main() {
     int num = 1;
     char number = num;

     std::cout<<number<<std::endl;

     system("PAUSE");
     return 0;
}

我不明白为什么。通常它应该将整数转换为字符。我正在使用 Dev C++,我的语言标准是 ISO C++11。我现在编程 4 年了,这是我第一次得到这样的东西。我希望我能解释我的问题,如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 试试这个:std::cout&lt;&lt;+number&lt;&lt;std::endl;
  • 它修复了它。谢谢你。但是为什么它以前不起作用?请解释一下好吗?
  • 奇怪的符号是ASCII码1的字符。你想打印什么?如果您想打印文本1,那么只需执行std::cout &lt;&lt; num; 为什么首先要转换为char
  • 什么是“1 作为字符”?它是编码值为 1 的字符吗?还是包含数字 1 的字符? 1 != '1'.
  • 如果您想知道,+number 会将字符转换为 int,让您回到开始的位置。

标签: c++ char type-conversion int


【解决方案1】:

那么,自从 4 年以来,您似乎误解了 char 是什么。它不是直接的字符,而是一个数字。正是编码将该数字转换为可读字符。

本质上,char i=1char i='1' (ascii table) 不同。

【讨论】:

    【解决方案2】:

    从 int 转换为 char 失败

    其实int已经成功转换为char了。

    通常它应该将整数转换为字符。

    它就是这么做的。转换的结果是值为 1 的 char。

    计算机使用“字符编码”。您在屏幕上看到的每个符号都被编码为一个数字。例如(假设 ASCII 或兼容编码)'a' 字符的值为 97。

    值为 1 的 char 与具有编码字符 '1' 的值的 char 不同。因此,当您打印值为 1 的字符时,您不会看到数字 1,而是值 1 编码的字符。在 ASCII 和兼容的编码中,1 编码一个不可见的符号“标题开头”。


    我想将 1 打印为字符。

    你可以这样做:

    std::cout << '1' << '\n';
    

    【讨论】:

    • 此代码仅用于测试目的。我正在做项目,我需要将 int 转换为 char。我在网上看了看,如果我输入 char a = '1';它会接受它并自动将数字转换为字符。当我测试它时,我得到了那个符号。这就是我制作这个小代码进行测试的原因。
    • @Vektor007 a char 几乎一个数字。当您打印char a='1' 时,您确实得到了您所期望的,但是您再次错误地假设它会以某种方式等于char a=(char) 1,但事实并非如此(后者是“标题的开始”)。实际上,第二个说法没有多大意义。注意:'1'==491=='SOH'
    猜你喜欢
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多