3

例如,如果我写 32u 那么 c++ 理解它是 unsigned int 或者如果我写 0x 那么 c++ 理解它是一个十六进制数。

我想知道的是是否有某种方法可以定义更多这些?就像如果我写 128M 那么它将被转换为 134217728 或 12K 将被转换为 12288 等等。

4

1 回答 1

4

使用 C++11 用户定义的文字:

constexpr unsigned long long operator"" _M(unsigned long long lit) {
    return lit * 1024 * 1024;
}

//use: 128_M

有下划线是因为您定义的所有用户定义文字都需要以 1 开头。那些没有被保留并将开始被标准使用的是 C++14。

于 2013-06-01T00:34:24.593 回答