相关疑难解决方法(0)

如何使用C++在一行中声明和定义多个变量?

我总是认为,如果我声明这三个变量,它们都将具有值0

int column, row, index = 0;
Run Code Online (Sandbox Code Playgroud)

但我发现只有索引等于零而其他的都是垃圾,如844553和2423445.

如何在不声明新行的每个变量的情况下将所有这些变量初始化为零?

c++

152
推荐指数
9
解决办法
29万
查看次数

(为什么)使用未初始化的变量未定义行为?

如果我有:

unsigned int x;
x -= x;
Run Code Online (Sandbox Code Playgroud)

很明显,x 应该这样表达后是零,但到处看,他们说的行为,这种代码是不确定的,而不是仅仅值x(直到减法之前).

两个问题:

  • 这段代码的行为确实未定义吗?
    (例如,代码在兼容系统上崩溃[或更糟]?)

  • 如果是这样,为什么 C表示行为是未定义的,当非常清楚x这里应该为零时?

    即不在此定义行为给出的优势是什么?

很明显,编译器可以简单地使用它在变量中认为"方便"的任何垃圾值,并且它可以按预期工作......这种方法有什么问题?

c initialization undefined-behavior

77
推荐指数
6
解决办法
1万
查看次数

9
推荐指数
3
解决办法
1026
查看次数

标签 统计

c ×2

c++ ×1

initialization ×1

undefined-behavior ×1