Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;变量声明中出现两个或多个数据类型错误_C++_Auto - Fatal编程技术网

C++ C++;变量声明中出现两个或多个数据类型错误

C++ C++;变量声明中出现两个或多个数据类型错误,c++,auto,C++,Auto,我运行了下面的C程序,并在中获得了作为输出 #include<stdio.h> int main() { auto int i = 0; if(++i) printf("In"); else printf("Out"); return 0; } #包括 int main() { 自动积分i=0; if(++i) printf(“In”); 其他的 printf(“输出”); 返

我运行了下面的C程序,并在中获得了
作为输出

#include<stdio.h>
int main()
{
    auto int i = 0;
    if(++i)
        printf("In");
    else
        printf("Out");

    return 0;
}
#包括
int main()
{
自动积分i=0;
if(++i)
printf(“In”);
其他的
printf(“输出”);
返回0;
}
<>但是,当我试图通过改变头文件和标准输出来作为C++程序运行时,我得到一个错误:

jdoodle.cpp:在函数“int main()”中: jdoodle.cpp:6:14:错误:“i”声明中有两种或更多数据类型。
6 |自动积分i=0; |^.
jdoodle.cpp:7:10:错误:“i”未在此范围内声明。
7 |如果(++i)。
|^

C++代码:

#include <iostream>

using namespace std;

int main() {
    auto int i = 0;
    if(++i)
        cout<<"In";
    else
        cout<<"Out";

    return 0;
}
#包括
使用名称空间std;
int main(){
自动积分i=0;
if(++i)

C++程序中的c> ,对于行

auto int i = 0;
如果使用C++11或更高版本进行编译,则使用从其初始化值自动推断变量
i
的类型。但是,该行还包括
int
,该行也声明了类型。不能同时使用这两个变量——如果编写
双int i=0;
i
不能同时是
double
int
)或
int int i=0;
(它是相同的类型,但您要声明两次类型)。请选择一个或另一个,即

auto i = 0;

您可以看到,它可以与C++98一起使用,但不能与C++11或C++14联机使用。在C++11之前。

在C中,它是从B继承的过时关键字。它可能是隐式假定的,也可能是非法指定的。因此,它基本上从未使用过

C++从C原样继承了此关键字,并在C++98下继承了您的代码。在C++11中,此关键字被重新调整用途以用于。它现在被广泛使用,但含义完全不同,您尝试使用它的方式是非法的


点C,C++是不同的语言。编写C和C++下的代码是困难的,需要小心。

不要惊讶于得到不同的结果。C不是C++和C++不是C:C和C++是两种不同的语言。你需要把它们当作这样的。你不会尝试编译C作为C++。n C++98,但自从C++11以来,
auto
的含义发生了变化。吹毛求疵:我建议稍微重写一下,因为
double int I=0;
示例可能会被误解为
auto
在OPs示例中解析为
double
或者使用
int i=0;
来说明issue@largest_prime_is_463035818我现在已经调整好了,希望更清晰。
int i = 0;