[英]C++ error two or more data types in declaration of variable
我运行了以下 C 程序并In
output 的身份进入。
#include<stdio.h>
int main()
{
auto int i = 0;
if(++i)
printf("In");
else
printf("Out");
return 0;
}
但是,当我尝试通过更改 header 文件和标准 output 将其作为 C++ 程序运行时,出现错误:
jdoodle.cpp:在 function 'int main()'中:jdoodle.cpp:6:14:错误:'i' 声明中有两种或多种数据类型。
6 | 自动int i = 0; | ^。
jdoodle.cpp:7:10: 错误: 'i' 未在此 scope 中声明。
7 | 如果(++i)。
| ^
C++ 代码:
#include <iostream>
using namespace std;
int main() {
auto int i = 0;
if(++i)
cout<<"In";
else
cout<<"Out";
return 0;
}
在C++程序中,为线
auto int i = 0;
如果使用 C++11 或更高版本进行编译,则auto
关键字用于从变量i
的初始化值中自动推断变量的类型。 但是,该行还包括int
,它也声明了类型。 你不能同时使用它们——如果你写double int i = 0;
你会得到同样的错误。 ( i
不能既是double
又是int
)或int int i = 0;
(它是相同的类型,但您要声明该类型两次)。 选择一个或另一个,即要么
auto i = 0;
或者
int i = 0;
您可以在此处在线看到它适用于 C++98,但不适用于 C++11 或 C++14。 在 C++11 之前, auto
关键字是存储 class 说明符。
在 C 中,auto
是一个从 B 继承的过时关键字。它要么是隐式假设的,要么是非法指定的。 因此,它基本上从未使用过。
C++ 原样从 C 继承此关键字,您的代码将在 C++98 下编译。 在 C++11 中,此关键字被重新用于隐式类型推导。 它现在被广泛使用,但意味着完全不同的东西,您尝试使用它的方式是非法的。
关键是,C 和 C++ 是不同的语言。 编写在 C 和 C++ 下编译的代码很困难,需要小心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.