• C++鲜为人知的符号


    目录

    目录 1

    1. 引言 1

    2. 少为人知的符号表1 1

    2.1. 符号表 1

    2.2. 代码示例 2

    3. 少为人知的符号表2 2

    3.1. 符号表 2

    3.2. 代码示例 3

    附:C++59个关键词列表 3

    1. 引言

    这些鲜为人知的C++符号,可直接在代码中使用,但实践中不推荐这么做,可作为茶余饭后的乐趣了解C++的另一面

    虽然它们鲜为人知,但却不是GNU g++独有的,而是C++标准定义的,找一本C++标准书或pdf文档看看,就可以见到它们赫然在目。(注:C++17标准将干掉这些鲜为人知的符号)

    2. 少为人知的符号表1

    2.1. 符号表

    代码中,可用左边的替代右边的:

    可选的符号

    可替代的常见符号

     

    <%

    {

    注意不能替代函数定义的{

    %>

    }

    注意不能替代函数定义的}

    <:

    [

    :>

    ]

    %:

    #

    %:%:

    ##

    and

    &&

    or

    ||

    xor

    ^

    bitor

    |

    compl

    ~

    bitand

    &

    and_eq

    &=

    or_eq

    |=

    xor_eq

    ^=

    not

    !

    not_eq

    !=

    2.2. 代码示例

    // GNU g++编译方法:g++ -g -o a a.cpp

    #include <stdio.h>

    int main()

    {

            int N = 2;

            for (int i=0; i<N; ++i)

            <%

                    printf("%d ", i);

            %>

            return 0;

    }

    3. 少为人知的符号表2

    三个字符等同单个字符,GNU g++编译时需要指定编译参数“-trigraphs”。注意,这个特性从C++2017标准开始已不支持。

    3.1. 符号表

    可选的符号

    可替代的常见符号

    ??=

    #

    ??/

    ??’

    ^

    ??(

    [

    ??)

    ]

    ??<

    {

    ??>

    }

    ??!

    |

    ??-

    ~

    3.2. 代码示例

    // 注意使用GNU g++编译以下代码,需要指定编译参数“-trigraphs

    // g++ -g -o b b.cpp -trigraphs

    #include <stdio.h>

    // 下一语句完全等同于:#define index(array, i) array[i]

    ??=define index(array, i) array??(i??)

    int main()

    {

            int m[] = { 3, 7 };

            printf("m[0]=%d, m[1]=%d ", index(m, 0), index(m, 1));

            return 0;

    }

    附:C++59个关键词列表

    asm

    do

    if

    return

    typedef

    auto

    double

    inline

    short

    typeid

    bool

    dynamic_cast

    int

    signed

    typename

    break

    else

    long

    sizeof

    union

    case

    enum

    mutable

    static

    unsigned

    catch

    explicit

    namespace

    static_cast

    using

    char

    export

    new

    struct

    virtual

    class

    extern

    operator

    switch

    void

    const

    false

    private

    template

    volatile

    const_cast

    float

    protected

    this

    wchar_t

    continue

    for

    public

    throw

    while

    default

    friend

    register

    true

  • 相关阅读:
    猪猪的机器学习笔记(八)聚类
    猪猪的机器学习笔记(七)最大熵模型
    猪猪的机器学习笔记(九)推荐系统
    标签button:点击button按钮时,出现了页面自动刷新的情况
    SQL案例
    SQL学习记录:函数(二)
    SQL学习记录:定义(一)
    C# 后台报错输出到日志
    DateTime 时间类型总结(前端)
    笛卡尔积的使用
  • 原文地址:https://www.cnblogs.com/aquester/p/13347520.html
Copyright © 2020-2023  润新知