- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于以下 program :
int main()
{
new char[4] {"text"}; // #1
new char[5] {"text"}; // #2
new char[] {"text"}; // #3
}
clang 给出了
#1
的错误其中说:
error: initializer-string for char array is too long
并接受
#2
和
#3
.
error: invalid conversion from 'const char*' to 'char' [-fpermissive]
此外还有
#3
它给出了错误:
error: expected primary-expression before ']' token
那么该语言对这段代码是否格式良好有什么看法呢?
最佳答案
好的,这很容易追踪。 {}
的存在意味着正在执行列表初始化,因此我们可以访问规范中我们最喜欢的部分:[dcl.init.list]/3 .
在情况 1 中被初始化的对象是 char[4]
.花括号初始化器列表不是指定的初始化器,因此 3.1 被忽略。 char[4]
不是一个类,所以 3.2 被忽略。那个brings us to 3.3 :
Otherwise, if
T
is a character array and the initializer list has a single element that is an appropriately-typed string-literal ([dcl.init.string]), initialization is performed as described in that subclause.
char[4]
肯定是字符数组,并且初始化列表肯定包含单个元素,并且该元素实际上与字符数组的类型匹配。所以去
[dcl.init.string]我们去。
Successive characters of the value of the string-literal initialize the elements of the array.
There shall not be more initializers than there are array elements.
char[5]
的过程.这不会触发,因为 5 足够大。
char[]
.就初始化而言,这与使用数字没有什么不同。
char[]
是一个字符数组,所以它遵循上述规则。 C++17 会窒息使用
char[]
在
new
表达式,但是
C++20 is fine with it .
If the type-id or new-type-id denotes an array type of unknown bound ([dcl.array]), the new-initializer shall not be omitted; the allocated object is an array with n elements, where n is determined from the number of initial elements supplied in the new-initializer ([dcl.init.aggr], [dcl.init.string]).
关于c++ - 这些带有 char 数组的新表达式中哪些是格式良好的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63551203/
嗨,我正在考虑开发一种文件传输程序,想知道我是否想要尽可能好的加密,我应该使用什么? 我会用 C# 开发它,所以我可以访问 .net 库 :P在我的 usb 上有一个证书来访问服务器是没有问题的,如果
我创建的这个计算两个数组的交集是线性的方法的复杂度(在良好、平均、最差的情况下)? O(n) public void getInt(int[] a,int[] b){ int i=0; int
我已经能够使用 RTCPeerConnection.getStats() API 获得 WebRTC 音频调用的各种统计信息(抖动、RTT、丢包等)。 我需要将整体通话质量评为优秀、良好、一般或差。
基本问题: 如果我正在讲述/修改数据,我应该通过索引硬编码索引访问文件的元素,即 targetFile.getElement(5);通过硬编码标识符(内部翻译成索引),即 target.getElem
在 Linux 上,我想知道要调用什么“C”API 来获取每个 CPU 的统计信息。 我知道并且可以从我的应用程序中读取 /proc/loadavg,但这是系统范围的负载平均值,而不是每个 CPU 的
在客户端浏览器中使用 fetch api,GET 或 POST 没有问题,但 fetch 和 DELETE 有问题。它似乎将 DELETE 请求方法更改为 OPTIONS。 大多数研究表明是一个cor
我是一名优秀的程序员,十分优秀!