gpt4 book ai didi

c - 无论实现如何, 'a' 到 'z' 的 ASCII 值不是从 97 到 122 连续的吗?一本好书却另有说法

转载 作者:行者123 更新时间:2023-12-03 03:05:28 25 4
gpt4 key购买 nike

我认为以下程序没有任何问题,而且它的不可移植性确实让我感到困惑。根据迈克·巴纳汉 (Mike Banahan) 的书 (GBdirect C Book, Section 2.4.2) ,以下程序是不可移植的。给出的理由是:

Another example, perhaps. This will either print out the whole lower case alphabet, if your implementation has its characters stored consecutively, or something even more interesting if they aren't. C doesn't make many guarantees about the ordering of characters in internal form, so this program produces non-portable results!

那么,简单来说,你能解释一下下面的程序有什么问题吗?无论实现如何,字符的 ASCII 值是否都相同?我的意思是,“a”的值始终为 97,“b”的值始终为 98;那么为什么通过添加 1 个不可移植的来获得后者呢?

#include <stdio.h>
#include <stdlib.h>
main(){
char c;

c = 'a';
while(c <= 'z'){
printf("value %d char %c\n", c, c);
c = c+1;
}

exit(EXIT_SUCCESS);
}

最佳答案

C 不需要 ASCII 编码。它允许其他编码,其中一些可能没有由连续值表示的字母。

一个例子是 EBCDIC其中字母不连续。

请注意,C 标准保证数字字符始终是连续的(尽管它们可能不像 ASCII 那样具有值 48-57)。

关于c - 无论实现如何, 'a' 到 'z' 的 ASCII 值不是从 97 到 122 连续的吗?一本好书却另有说法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25833439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com