考虑以下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代码?
答案 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'
)中使用上述转义序列之一进行比较。