码迷,mamicode.com
首页 > 编程语言 > 详细

标准C语言的三字符组及替换拼写的分隔符

时间:2015-04-04 09:24:13      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:c   三字符组   分隔符   

                                                            技术分享

标准C语言中包括一组三字符组,使C语言程序可以只用ISO 646-1083不变代码集编写,这是七比特ASCII代码集的子集,是许多非英语国家字符集公用的代码集。三字符组以两个连续问号开头,见上图。标准C语言还提供一些记号的重拼和定义一些运算符的宏替换的头文件<iso646.h>,但与三字符组不同的是,这些替换无法在字符串型常量和字符型常量中识别。

源程序中三字符组的转换发生在词法分析(转换为记号)之前和识别字符串型常量和字符型常量中的转义字符之前。标准C语言只能识别以上9个三字符组,所有其他字符序列(如??&)不进行转换。新的转义字符\?可用于防止对类似于三字符组的字符序列进行解释。

为了帮助编程人员使用没有某些美语或英语字符的I/O设备,替换拼写<%%><::>%:%:%:分别等价于分隔符{}[]###,见下图。

                                                                                技术分享

如下例子,分隔符使用的两种形式的结果是一样的:

// main.c 
#include <stdio.h> 

#define SEASON(season) "Season is: "#season 
#define MONTH(month) "Month is: "%:month 

#define ADHERE(one, two) one##two 
#define LINK(one, two) one%:%:two 

int main(void) 
{ 
    char arr[] = {'a', 'b'}; 
    char arr2<::> = <%'c', 'd'%>; 
    printf("%c, %c\n", arr[0], arr[1]); // a, b 
    printf("%c, %c\n", arr2<:0:>, arr2<:1:>); // c, d 
 
    printf("%s\n",SEASON("Summer")); // Season is: "Summer" 
    printf("%s\n",MONTH("April")); // Month id: "April" 

    printf("%d\n", ADHERE(1, 2)); // 12 
    printf("%d\n", LINK(3, 4)); // 34 

    return 0; 
}


标准C语言的三字符组及替换拼写的分隔符

标签:c   三字符组   分隔符   

原文地址:http://blog.csdn.net/ieearth/article/details/44857945

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!