相关疑难解决方法(0)

为什么没有为C++ 14位分隔符选择空格字符?

从C++ 14开始,感谢n3781(它本身没有回答这个问题),我们可能会编写如下代码:

const int x = 1'234; // one thousand two hundred and thirty four
Run Code Online (Sandbox Code Playgroud)

目的是改进这样的代码:

const int y = 100000000;
Run Code Online (Sandbox Code Playgroud)

并使其更具可读性.

下划线(_)字符已经由用户定义的文本采取了C++ 11,和逗号(,)的本地化问题-许多欧洲国家令人困惑以此作为小数点分隔符-与逗号运算符的冲突,虽然我做的想知道什么样的现实世界的代码可能会被允许,例如1,234,567.

无论如何,更好的解决方案似乎是空间特征:

const int z = 1 000 000;
Run Code Online (Sandbox Code Playgroud)

这些相邻的数字文字标记可以由预处理器连接,就像字符串文字一样:

const char x[5] = "a" "bc" "d";
Run Code Online (Sandbox Code Playgroud)

相反,我们得到了撇号('),我没有被任何我认识为数字分隔符的书写系统使用.

是否有理由选择撇号而不是简单的空间?


令人费解,因为所有这些语言都在文本中保留了一个逗号"分开"一个原本句子的概念,其句号用于"终止"句子 - 至少对我来说,这非常类似于逗号"分开"一个数字的整数部分和一个句号"终止"它为分数输入做好准备.

c++ language-lawyer digit c++14

63
推荐指数
5
解决办法
1万
查看次数

对于C中的整数常量,科学记数法是否安全?

有一段时间,我一直用科学记数法表示常量中10的大功率,所以我不需要计算零.例如

#define DELAY_USEC 1e6
Run Code Online (Sandbox Code Playgroud)

一位同事指出这不安全,因为它不是一个整数,并且不能保证总是完全等于1000000 .文档似乎证实了这一点,但我想知道它的实用性是否真实.有没有办法用速记安全地声明十次幂的整数?将它强制转换为定义中的int是否安全?

c c++ gcc

35
推荐指数
3
解决办法
2万
查看次数

在源代码中代表大数字以提高可读性?

是否有更人性化的方式来表示用C++或C编写的应用程序的源代码中的大数字?

例如2,345,879,444,641,如果我们想要一个程序返回我们要做的那个数字,那么就用C或C++中的数字来表示return 2345879444641.

但这不是真的可读.

例如,在PAWN(一种脚本语言)中,我可以做return 2_345_879_444_641甚至是return 2_34_58_79_44_46_41这两种语言都可以返回数字2,345,879,444,641.

对于人眼来说,这更具可读性.

这有C或C++的等价物吗?

c c++ c-preprocessor

16
推荐指数
4
解决办法
2749
查看次数

使C源中的大常量更具可读性?

我正在为微处理器编写一些代码.
它有一些大的关键常数.

#define F_CPU 16000000UL

在这种情况下,这是CPU频率.在赫兹.

实际上,如果没有手动在数字上标记光标,则很难判断它是1,600,000,160,000,000还是16,000,000.

如果我在数字中加入逗号#define F_CPU 16,000,000UL,它会截断常量.

我使用了一些具有特定数字分隔符的深奥语言,旨在使大数字更具可读性(例如16_000_000,主要是用于MCU的语言).大型"神奇数字"在嵌入式内容中相当普遍,因为它们需要描述MCU如何与现实世界对话.

C中有这样的东西吗?

c embedded readability microprocessors

7
推荐指数
3
解决办法
1472
查看次数

带单引号的整数文字?

到底什么被赋予了价值?我很惊讶这竟然已经编译完成了。

//g++  7.4.0

#include <iostream>

int main()
{
    auto value = 123'456'7;
    std::cout << value << std::endl;

    value += 1;
    std::cout << value << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出:

1234567
1234568
Run Code Online (Sandbox Code Playgroud)

c++ integer literals

4
推荐指数
1
解决办法
1518
查看次数