gpt4 book ai didi

c++ - C 和 C++ 之间有什么区别禁止在后者中编译这个不拘一格的代码示例?

转载 作者:可可西里 更新时间:2023-11-01 18:03:41 26 4
gpt4 key购买 nike

我只是想知道问题的内容 'Hello, World!' in C without semicolons and without 'if', 'while', or 'for' statements .

以下代码在 C 中有效,但在 C++ 中无效:

int main(int argc, char *argv[printf("Hello, World!\n")]) {}

在 C++ 中,我得到这个错误:

error: expected ‘,’ or ‘...’ before ‘argv’|
warning: second argument of ‘int main(int, char*)’ should be ‘char **’ [-Wmain]|
||=== Build finished: 1 errors, 1 warnings ===|

为什么它在 C++ 中不起作用?

最佳答案

因为 C++ 没有任何 variable-length array功能。

argv参数在

char *argv[printf("Hello, World!\n")]

是一个变长数组。

指定数组大小的表达式是

printf("Hello, World!\n")

这个表达式的结果是 int 类型,是传输的字符数(如果有错误,则为负值)。

[] 中的表达式不是常量的数组,如示例中的 printf 表达式,是一个可变长度数组。这些数组也被允许用作函数参数的类型。

变长数组是 C 中引入的一个特性,在 C99 中并且在 C++ 中没有引入。

关于c++ - C 和 C++ 之间有什么区别禁止在后者中编译这个不拘一格的代码示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8732234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com