char ch ='Z'会存储在ch中?

时间:2016-06-01 04:46:00

标签: c

因为我很困惑ch中存储的内容。它是 ascii值还是' ,因为有些网站说它存储了ascii,有些网站说它的商店' z'。 链接说答案是' z' :http://cprogrammingworld4u.blogspot.in/2011/07/chapter-1-getting-started.html

链接说答案是ascii:https://www.careercup.com/question?id=12511679

4 个答案:

答案 0 :(得分:10)

在C中,'z'int类型的常量,其值为122(假设您使用的是ASCII机器,您可能就是这样)。你的两个消息来源都是一致的 - 它们是一样的。

例如,只需将您所关注的所有不同方式打印出来即可。示例程序:

#include <stdio.h>

int main(void)
{
    char ch = 'z';
    char i  = 122;
    printf("%c %d\n", ch, ch);
    printf("%c %d\n", i, i);
    return 0;
}

运行它:

$ make example && ./example
z 122
z 122

答案 1 :(得分:0)

答案是......两个!这是一个可以帮助您更好地理解的片段:

import graph_tool.all as gt

G = gt.load_graph("G.gt")
gt.graph_draw(G, vertex_text=G.vertex_properties.word, vertex_font_size=10, output_size=(1000, 1000), output="G.png", vertexsize=10)

当你认为ch为char时,它确实是'z',即存储。但是如果你将它转换为int,你将获得'z'的ASCII值,即122.

希望它会有所帮助。

答案 2 :(得分:0)

它“通常”存储ASCII值。

因此可以对char执行整数运算。 ASCII值用于将其映射到正确的ASCII字符。您甚至可以增加或减少它。

#include <stdio.h>

int main(void)
{

char ch = 90;
printf("%c\n\n", ch);
ch = 64;
for (int i = 0; i < 26; i++)
{
    ch++;
    printf("%c\n", ch);
}

}

for循环打印出A - Z.请注意我在每次迭代中如何将ch的值增加1。

如果您发现我已经分配了一个号码。我甚至可以指定它'z'。

从完整的初学者角度来看,您必须了解的是,所有内容都在内存中存储为“0”或“1”。这个不可读的0和1序列转换成你在屏幕上看到的文字(解码)。

答案 3 :(得分:0)

'Z'我们一个角色常数。它的类型是int。当你使用

char c = 'Z';

存储在c中的整数值可能因编译器使用的字符编码而不同。如果它使用ASCII编码,那么它将'Z'中的c的ASCII表示存储在90中,即'Z'十进制。如果它使用EBCDIC编码,那么它会将c的EBCDIC表示存储在233中,即c十进制。

为了编写可移植程序,您必须忽略'9' - '0'中存储的整数值。对于这两种编码,您可以指望的某些事情是:

  1. 9等于'Z' - 'A'

  2. 'z' - 'a'等于self.presentingViewController.dismissViewControllerAnimated (true) {}

  3. 我不知道上述情况不适用的其他编码。

    参考文献:
    ASCII encoding chart
    EBCDIC encoding chart