(已解决)尝试将整数转换为char

时间:2020-08-05 03:28:05

标签: c++ c debugging casting c++17

因此,我正在尝试编写一个可以用作密码的代码。它将以密码为输入和输出(打印)编码后的单词。我的代码中有问题的代码段是for循环。


#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main(void)
{
   
        char input[] = "hello";
        printf("hello\n");
        printf("ciphertext: ");
        for (int i = 0; i < 5; i++)
        { 
            if(isalpha(input[i]))
            {
                int current = input[i];
                int cypher = ((current + 1) % 26 )+current;
                char out = (char)cypher;
                printf("%c", out);
            }
            else
            {
                printf("%c", input[i]);
            }

        }
        printf("\n");
        
}

调试时遇到的问题是,最终存储在“ out”中的值看起来是正确的,但是当涉及到打印时,它完全显示了其他内容。我确实在这里找到了很多东西,例如编写如下代码:

char out = (char)cypher;
char out= cypher + '0';

,依此类推,但无济于事。输出应该是ifmmp,但我会得到j〜rrx

任何事情都会有所帮助!谢谢:)

1 个答案:

答案 0 :(得分:0)

您得到正确的答案。 105是ASCII值“ i”。没有区别。更准确地说,char类型定义为整数。在几乎所有编译器上,它的大小都是8位。因此unsigned char的值可以在0到255之间;签名的char的值可以在-128到+127之间。

因此,当您的out变量的值为105时,它的值为'i'。

您的printf的输出将为:

i

但是,如果您在调试器中查看out变量,则可能会看到105,具体取决于调试器。