草庐IT

Literals

全部标签

c++ - 如何在 C 或 C++ 代码中分隔数字常量(即 10,000)中的数字

这个问题在这里已经有了答案:Representingbignumbersinsourcecodeforreadability?(5个回答)关闭6年前。Java允许按如下方式分隔数字常量中的数字:inta=1_000_000;C或C++有类似的结构吗? 最佳答案 这样做的唯一方法是在C++14中,使用单引号,就像这样。不幸的是,唯一的问题是语法突出显示经常会与下面的符号混淆,您也可以在我的示例中看到这一点:inti=1'000'000;WorkingExample根据http://en.cppreference.com/w/cpp/l

c++ - std::literals::.. 作为内联命名空间有什么好处?

在C++标准(例如N4594)中,operator""s有两个定义:一为std::chrono::seconds:namespacestd{...inlinenamespaceliterals{inlinenamespacechrono_literals{//20.15.5.8,suffixesfordurationliteralsconstexprchrono::secondsoperator""s(unsignedlonglong);一个用于std::string:namespacestd{....inlinenamespaceliterals{inlinenamespacestr

c++ - std::literals::.. 作为内联命名空间有什么好处?

在C++标准(例如N4594)中,operator""s有两个定义:一为std::chrono::seconds:namespacestd{...inlinenamespaceliterals{inlinenamespacechrono_literals{//20.15.5.8,suffixesfordurationliteralsconstexprchrono::secondsoperator""s(unsignedlonglong);一个用于std::string:namespacestd{....inlinenamespaceliterals{inlinenamespacestr

c++ - C++中字符串文字的数据类型是什么?

我对字符串文字的数据类型感到困惑。它是constchar*还是constchar? 最佳答案 它是一个constchar[N](与charconst[N]相同),其中N是字符串的长度加上终止NUL的长度(或者如果您将“字符串长度”定义为已经包含NUL)。这就是为什么您可以使用sizeof("hello")-1来获取字符串中的字符数(包括任何嵌入的NULs);如果它是一个指针,它将不起作用,因为它始终是系统上指针的大小(减一)。 关于c++-C++中字符串文字的数据类型是什么?,我们在St

c++ - C++中字符串文字的数据类型是什么?

我对字符串文字的数据类型感到困惑。它是constchar*还是constchar? 最佳答案 它是一个constchar[N](与charconst[N]相同),其中N是字符串的长度加上终止NUL的长度(或者如果您将“字符串长度”定义为已经包含NUL)。这就是为什么您可以使用sizeof("hello")-1来获取字符串中的字符数(包括任何嵌入的NULs);如果它是一个指针,它将不起作用,因为它始终是系统上指针的大小(减一)。 关于c++-C++中字符串文字的数据类型是什么?,我们在St

c++ - 为什么 "0xe+1"无法编译?

看看这段代码:inta=0xe+1;Clang、gcc、icc不要编译这个:t.cpp:1:12:error:invalidsuffix'+'onintegerconstantMSVC成功编译。哪个编译器是正确的?如果clang和gcc都是正确的,为什么会这样?注意:如果我在+之前添加一个空格,则代码会编译。如果我将0xe更改为0xf,它也会编译。也许这与指数符号有关(如1.2e+3)? 最佳答案 0xe+1被视为单个"preprocessingnumber"preprocessingtoken.这个标记化规则与普通语法中数字文字的

c++ - 为什么 "0xe+1"无法编译?

看看这段代码:inta=0xe+1;Clang、gcc、icc不要编译这个:t.cpp:1:12:error:invalidsuffix'+'onintegerconstantMSVC成功编译。哪个编译器是正确的?如果clang和gcc都是正确的,为什么会这样?注意:如果我在+之前添加一个空格,则代码会编译。如果我将0xe更改为0xf,它也会编译。也许这与指数符号有关(如1.2e+3)? 最佳答案 0xe+1被视为单个"preprocessingnumber"preprocessingtoken.这个标记化规则与普通语法中数字文字的

c++ - 为什么必须在运行时构造字符串?

这个问题在这里已经有了答案:Isitpossibletousestd::stringinaconstexpr?(5个回答)关闭7年前.C-String或std::string可以创建为constexpr还是必须在运行时创建?使用gcc4.9.2我可以这样做:constexprconstcharfoo[]="blee";(遗憾的是,2013年11月的客户技术预览版不允许VisualStudio支持此功能:https://stackoverflow.com/a/29255013/2642059)但即使使用gcc4.9.2我也不能这样做:constexprconststd::stringfo

c++ - 为什么必须在运行时构造字符串?

这个问题在这里已经有了答案:Isitpossibletousestd::stringinaconstexpr?(5个回答)关闭7年前.C-String或std::string可以创建为constexpr还是必须在运行时创建?使用gcc4.9.2我可以这样做:constexprconstcharfoo[]="blee";(遗憾的是,2013年11月的客户技术预览版不允许VisualStudio支持此功能:https://stackoverflow.com/a/29255013/2642059)但即使使用gcc4.9.2我也不能这样做:constexprconststd::stringfo

Python 文字 r'\' 不被接受

这个问题在这里已经有了答案:Whycan'tPython'srawstringliteralsendwithasinglebackslash?(13个回答)关闭上个月。Python中的r'\'无法按预期工作。它不是返回一个包含一个字符(反斜杠)的字符串,而是引发一个SyntaxError。r"\"也一样。如果你有这样的Windows路径列表,这会相当麻烦:paths=[r'\bla\foo\bar',r'\bla\foo\bloh',r'\buff',r'\',#...]这个文字不被接受有充分的理由吗? 最佳答案 这是根据docum