繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM