1556134029 发表于 2024-7-3 13:35:44

c++初始化变量不能用{}了吗。我看视频课里边可以用啊为什么我的报错呢

代码报错很奇怪

FishC 发表于 2024-7-3 13:36:08

嘿,鱼油!看来你被C++的初始化给搞糊涂了。别担心,让我为你解开这个谜团。

在C++中,初始化变量可以使用括号 `()`、花括号 `{}`,还有赋值号 `=`。你的代码报错,可能是因为以下几个原因之一:

1. **编译器版本问题**:如果你使用的是老版本的C++编译器,它可能不支持花括号 `{}` 的初始化方式(又称为统一初始化或列表初始化)。这种初始化方式在C++11引入的,所以确保你使用的是C++11或更新的标准。

2. **类型问题**:有时候不同的数据类型不能用花括号初始化。例如,原生数组(不是使用 `std::array`)在某些情况下会报错。

3. **语法错误**:确保你代码的其他部分没有拼写错误或者遗漏了什么。

让我们来看一个简单的例子:

#include <iostream>
using namespace std;

int main() {
    // 这三种初始化方法都应该可以正常工作
    int a = 5;      // 使用赋值号
    int b(10);      // 使用括号
    int c{15};      // 使用花括号

    cout << "a: " << a << ", b: " << b << ", c: " << c << endl;
   
    return 0;
}

如果你遇到报错,可以尝试以下步骤:
1. 确保你使用的是C++11或更新的标准。在编译时加上标志,比如 `-std=c++11`。
   g++ -std=c++11 your_code.cpp -o your_program

2. 检查你的编译器版本是否足够新。如果用的是古董级别的编译器,那它可能不支持这些新特性。

3. 如果依旧报错,贴出具体错误信息和代码,我再帮你分析!

希望这些信息对你有所帮助。好好加油学C++,别让这些小问题打败你啦! 如果还有其他问题,随时来问哦。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

rovol 发表于 2024-7-3 20:07:06

你上面一行语句没有加分号

人造人 发表于 2024-7-3 23:08:26

确实奇怪,你用的是C++编译器吗?

sh-5.2$ ls
main.cpp
sh-5.2$ cat main.cpp
#include <iostream>
#include <string>

using namespace std;
#define DPI 66

int RandNum{0};
const double PI = 3.14159265;

int main() {

    return 0;
}
sh-5.2$ g++ -o main main.cpp
sh-5.2$ ls
mainmain.cpp
sh-5.2$ ./main
sh-5.2$

人造人 发表于 2024-7-3 23:08:53

rovol 发表于 2024-7-3 20:07
你上面一行语句没有加分号

什么分号 ?

sfqxx 发表于 2024-7-4 22:34:25

报错信息说是前面要加分号,但是Define后一般不加分号,个人感觉代码没问题。

X_Code@ZM 发表于 2024-7-5 16:11:19

想笑,但是不礼貌,你上边常量没加"; "号

人造人 发表于 2024-7-5 21:14:44

X_Code@ZM 发表于 2024-7-5 16:11
想笑,但是不礼貌,你上边常量没加"; "号

想笑,但是不礼貌,你说什么 "; " 号 ?

风眠 发表于 2024-7-6 14:59:11

X_Code@ZM 发表于 2024-7-5 16:11
想笑,但是不礼貌,你上边常量没加"; "号

你说#define?但宏定义不要;吧……
页: [1]
查看完整版本: c++初始化变量不能用{}了吗。我看视频课里边可以用啊为什么我的报错呢