- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为以下程序没有任何问题,而且它的不可移植性确实让我感到困惑。根据迈克·巴纳汉 (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/
我是一名优秀的程序员,十分优秀!