相关疑难解决方法(0)

谁决定了角色的排序

我有一个基于以下程序的查询 -

char ch;
ch = 'z';
while(ch >= 'a')
{
    printf("char is  %c and the value is %d\n", ch, ch);
    ch = ch-1;
}
Run Code Online (Sandbox Code Playgroud)

为什么在上述程序中不保证打印整套小写字母.如果C对内部形式的字符排序没有多少保证,那么实际上是谁以及如何做?

c operating-system char

9
推荐指数
1
解决办法
352
查看次数

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

我认为以下程序没有任何问题,并且不可移植性让我感到非常困惑。根据 Mike Banahan 的书(GBdirect C Book,第 2.4.2 节),以下程序是不可移植的。给出的理由是:

也许是另一个例子。如果您的实现连续存储其字符,这将打印出整个小写字母表,或者如果不是连续存储的,则打印出更有趣的东西。C 对内部形式中字符的顺序没有做出太多保证,因此该程序产生不可移植的结果!

那么,简单来说,你能解释一下下面的程序有什么问题吗?无论实现如何,字符的 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);
}
Run Code Online (Sandbox Code Playgroud)

c portability ascii char

3
推荐指数
1
解决办法
1292
查看次数

标签 统计

c ×2

char ×2

ascii ×1

operating-system ×1

portability ×1