debugging 尝试将整数转换为字符

vatpfxk5  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(171)

因此,我正在尝试编写一个类似于cypher的代码。它将单词作为输入,输出(打印)编码后的单词。我的代码中有问题的片段是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”中的值看起来是正确的,但是当打印它时,它显示的完全是其他的东西。我确实在这里查找了很多东西,比如这样写代码:
第一次
输出应该是ifmmp,但我得到了j~rrx
任何事情都会有帮助的!谢谢:)

ui7jx7zq

ui7jx7zq1#

你得到了正确的答案。105是ASCII值“i”。没有区别。更准确地说,char类型被定义为一个整数。在几乎所有的编译器上,它的大小都是8位。因此,unsigned char的值可以在0到255之间;有符号char可以具有-128到+127之间的值。
因此,当out变量的值为105时,它的值为'i'。
printf的输出将是:

i

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

相关问题