转换为整数容易混淆的C语句?

转换为整数容易混淆的C语句?,c,C,在下面的代码中,有一个我无法理解的论点。我应该创建一个由字母组成的金字塔,每一行都有一个唯一的字母。每个字母/行的格式都是连续的,因此第1行可以是a,第2行可以是B,第3行可以是C 问题在于用于创建金字塔行的第一个For循环。下面是麻烦的部分:(输入-'A'+1)。“输入”是用户指定的字符变量。还有一个名为“alphabet”的字符变量,它被分配了“a”,但除非我弄错了,否则这里不使用这个变量 从我的大脑如何在这部分代码中看到“A”,它是一个字符文字。基于这种想法,我创建了一个小程序,使用整个语

在下面的代码中,有一个我无法理解的论点。我应该创建一个由字母组成的金字塔,每一行都有一个唯一的字母。每个字母/行的格式都是连续的,因此第1行可以是a,第2行可以是B,第3行可以是C

问题在于用于创建金字塔行的第一个For循环。下面是麻烦的部分:(输入-'A'+1)。“输入”是用户指定的字符变量。还有一个名为“alphabet”的字符变量,它被分配了“a”,但除非我弄错了,否则这里不使用这个变量

从我的大脑如何在这部分代码中看到“A”,它是一个字符文字。基于这种想法,我创建了一个小程序,使用整个语句的这一部分作为printf语句。变量“输入”由用户指定。当我使用%c作为转换说明符运行它时,它完成时没有错误,但没有可见的输出,并且它完成时发出一声嘟嘟声。当我用%d运行它时,它会运行并给出一个整数,如果它们都是整数,那么从A中减去输入时,我会得到这个整数

我错过了什么?“A”是否正在转换为整数?我不明白它是怎么工作的,尽管我知道它确实有效。以下是原始代码:

#include <stdio.h>

int main()
{
    int i, j;
    char input, alphabet='A';
    printf("Enter the uppercase character you want to print in the last row ");
    scanf("%c", &input);
    for (i=1; i<=(input- 'A'+1); ++i) {
        for(j=1; j<=i; ++j)
            { printf("%c", alphabet); }
            ++alphabet;
            printf("\n");
    }
    return 0;
}
#包括
int main()
{
int i,j;
字符输入,字母='A';
printf(“在最后一行输入要打印的大写字符”);
scanf(“%c”,&input);

对于(i=1;iC中的字符在后台存储为整数,每个字符都有一个对应的值,您可以在ASCII表中看到。您可以始终将字符打印为%d,然后得到该字符的int值。您可以在编码时将其用作一种优势,以便可以递增、递减、比较和执行任何类型的运算你可以用基本整数


另外,张贴一份您遇到问题的代码副本,以便其他人和我可以查找错误。

'a'
这样的字符文字实际上是整数。
char
类型是有符号的8位整数类型。
'a'
等于
65
。您也可以检查ASCII表,看看哪个数字代表哪个字符。C中的i'A'是字符A的ASCII等价物。它是十进制格式的整数65。这部分代码利用ASCII表并根据它执行算术。欢迎使用堆栈溢出!在为您的问题编写标题时,请尝试解释您遇到的问题,而不是您所处的情况。
'A“
是一个整数常量,它对应于执行字符集中
'A'
的字符代码,这通常是ASCII的超集,因此
'A'
的值为65。与其只有原始程序,请修改问题,使其也有令您困惑的代码。当您解释C时向某人解释C字符值时,请注意C标准不要求使用ASCII。许多常见的C实现都使用它,但学生应该知道情况并非如此。向某人解释C字符值时,请注意C标准不要求使用ASCII。许多常见的C实现使用它,但学生们应该意识到情况并非如此。
#include <stdio.h>

int main()
{
  for (int i = 65; i < 91; i++)
    printf("%d printed as character is %c\n", i, i);
  return 0;
}
65 printed as character is A
66 printed as character is B
67 printed as character is C
68 printed as character is D
69 printed as character is E
70 printed as character is F
71 printed as character is G
72 printed as character is H
73 printed as character is I
74 printed as character is J
75 printed as character is K
76 printed as character is L
77 printed as character is M
78 printed as character is N
79 printed as character is O
80 printed as character is P
81 printed as character is Q
82 printed as character is R
83 printed as character is S
84 printed as character is T
85 printed as character is U
86 printed as character is V
87 printed as character is W
88 printed as character is X
89 printed as character is Y
90 printed as character is Z