zoukankan      html  css  js  c++  java
  • 替用运算符

    看这样一段代码,你能认出是什么语言吗?

    %:include <stdio.h>
    
    char a<:4:>={'A','B','C','D'};
    
    int main()
    <%
    	printf("%c
    ",a<:1:>);
    	return 0;
    %>
    

    emmm..看stdio.h好像是C语言吧,可%: <%%> <::>都是什么鬼?
    如果你将这段代码保存为.c后缀的文件编译运行一下,你会发现,没有一点点的编译错误!

    这段代码等价于

    #include <stdio.h>
    
    char a[4]={'A','B','C','D'};
    
    int main()
    {
    	printf("%c
    ",a[1]);
    	return 0;
    }
    

    这里的奥秘其实来源于一个叫做ISO646的标准,我在国际标准组织官网找到了这份文件

    看了一下,下载这个标准大概一个星期的伙食费就没了

    果断百度盗版。
    我们可以看到,这里给出了一张名为unique graphic character allocations(唯一图形字符分配)的表,受限于篇幅,我们省去字母部分,只看符号部分。

    注意一下,这里边是没有包含#[]``{}这几个写C语言程序时常用的字符的。

    标准8.2给出了IRV(国际参考版本)

    翻译一下开头的第一句话
    this version is available for use when there is no requirement to use a national or an application-oriented version.
    当不需要使用国家或面向应用程序的版本时,可以使用此版本。

    小结一下官方的意思,只要你使用唯一图形字符分配中的字符,在各个国家和系统中都是通用的,但是如果你使用IRV中的字符,在某些国家可能是不通用的。

    C是在美国使用标准美式键盘的系统上发展而来的,但在世界各地,并不是所有的键盘都有与美式键盘相同的的符合。

    例如下面这个德文键盘

    你看,你能在上面找到井号吗?找不到。

    那么德国人写C语言如果要声明一个头文件,怎么办呢?

    为了解决这样的问题,C99标准为逻辑运算符增加了可供选择的拼写法。

    这样,即使德国人键盘上没有#这些符号,也可以通过%:等符号进行替代。

  • 相关阅读:
    快速排序法
    ios随机数
    ios简单更改系统TabBar的高度
    ios电话拨打进行监听电话状态
    iosUISegmentedControl的基本设置
    ios使用xcode进行Archive打包上传出现的常见错误
    ios实现文字的自适应
    ios 给view添加一个渐变的背景色
    iOSNSDate的相关操作
    ios导航栏又按钮添加图片后使其保持原色
  • 原文地址:https://www.cnblogs.com/velscode/p/10549086.html
Copyright © 2011-2022 走看看