三字母词和转义字符

1.三字母词

  C标准定义了几个三字母词(trigrph),三字母词就是几个字符的序列,合起来表示另一个字符,用于使C环境在某些缺少必需字符的字符集上实现。以下左边给出三字母词,右边是它等价的字符。

??(  [

??)  ]

??!  |

??<  {

??>  }

??'  ^

??=  #

??/  \

??-  ~

例:

在VC++6.0环境下输入以下代码:

#include <stdio.h>
int main()
{
	printf("Delete file (are you sure ??):??/n");
	
	return 0;
}

运行结果:

可以看出,结果中]代替了??),用\代替了??/,可见三字母词起到了作用,且支持在命令符中使用,如??/n等价于\n等。

注:在DEV C++中编译运行该段代码输出仍然是原结果,因为该软件使用的是g++编译器,遇到三字母词自动忽略并弹出如[Warning] trigraph ??) ignored, use -trigraphs to enable [-Wtrigraphs]的警告。

2.转义字符

  当你想在字符串中想输入某个特定字符,如双引号"等,可能不能如愿,此时则需要使用转义字符。以下给出一些常用的转义字符。

\?  在书写连续多个问号时使用,防止它们被解释为三字母词。

\"  在字符串中输入双引号

\'  表示字符常量'

\\  表示一个反斜杠,防止它被解释为转义字符

实际上,\n等格式符也是转义字符。

\a  警告

\b  退格

\f  进纸

\n  换行

\r  回车

\t  水平制表

\v  垂直制表

\ddd  表示1~3个八进制数字

\xddd  表示1~4个十六进制数字

问题应用:

1.\40,\100、\x40、\x100、\0123、\x0123的值分别是什么?

答:

\40=32=空格字符

\100=64='@'

\x40=64='@'

\x100占12位,值太大而无法存在字符内,会报error C2022: '256' : too big for character

\0123=‘3’,\0123分为\012和3

\x0123值太大而无法存在字符内,会报error C2022: '256' : too big for character

2.打印出以下文本:"Blunder??!??"

代码:

#include <stdio.h>
int main()
{
	printf("\"Blunder?\?!?\?\"\n");
	return 0;
}

运行结果:

 

posted @ 2018-09-04 11:04  望三星  阅读(949)  评论(0编辑  收藏  举报