c - 为什么 char comparison "if(c>=' a' && c< ='z' )"不可移植?

标签 c comparison char

有人告诉我字符比较 if(c>='a' && c<='z')不便携。

例子

int main() {
    char c;
    scanf("%c", &c);
    if(c>='a' && c<='z')
        printf("lower case\n");
}

char比较if(c>='a' && c<='z')的任何证明不便携?

最佳答案

C 标准不保证'a' 之间只出现小写字母和 'z'在执行字符集中。

在EBCDIC编码中,'a'之间还有其他字符和 'z' ,并且一些 C 实现使用 EBCDIC。

C 标准确实保证数字是连续的,所以 '0' <= d && d <= '9'是否测试 d是十进制数字字符。

关于c - 为什么 char comparison "if(c>=' a' && c< ='z' )"不可移植?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16400009/

相关文章:

c - 在 CentOS 5.4 中编译 netfilter_queue 遇到困难(GCC 错误)

c - 使用单个管道的矩阵乘法

按位语句的说明

java - 将字符串与数组列表中的字符串的一部分进行比较

c - 复制字符串时出现段错误

c - 一个动画处理图标,纯C

c++ - 没有第二个操作数的三元运算符

Java 字符串 : difference between null and empty

clojure - Clojure 中数字的无符号比较?

c# - C#中如何取回子字符串的值