比较数字与特殊字符

时间:2016-12-16 15:43:24

标签: c char ascii special-characters

考虑以下C程序:

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

    c = 65;
    if(c=='A') printf("condition true");
    return 0; 
}

正如预期的那样(由于A的ASCII码为65,因此该程序打印语句“condition true”)。

现在考虑以下C程序:

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

    c = 27;
    if(c==ESC) printf("condition true");
    return 0; 
}

由于ESC的ASCII代码是27,我希望这个程序也打印语句“条件为真”。但是,该程序甚至没有编译,但回复了以下错误消息:

error: use of undeclared identifier 'ESC'

如何检查某些特殊字符(例如ESC,EOF,...)的某些数字(例如27)是否为ASCII代码?

2 个答案:

答案 0 :(得分:1)

ESC未在C中定义为特殊字符,也未定义为 ESC 。 C甚至不需要ASCII,尽管这是迄今为止最常用的编码集。

创建自己的

#ifndef ESC
  #define ESC 27
#else
  #error prior esc definition
#endif

if (some_number == ESC) {
  puts("number is same as ASCII ESC");
}

请注意,A也未定义为65。

如果代码需要测试数字是否为ASCII A,请使用

#define ASCII_A 65
if (some_number == ASCII_A) {

如果代码需要测试一个数字是'A',(匹配源代码集的 A

if (some_number == `A`) {

答案 1 :(得分:1)

第5.2.2节中只有C standard定义了某些特殊字符:

  • \a:alert
  • \b:退格
  • \f:表单Feed
  • \n:新行
  • \r:回车
  • \t:标签
  • \v:垂直标签

如果特殊字符是其中之一,则可以在字符常量(例如'\n')中使用上述转义序列之一进行比较。