这是未定义的行为
Is this undefined behaviour?
本文关键字:未定义 更新时间:2023-10-16
using namespace std;
struct s{
int tab[9];
};
int main(){
s x;
EDITION与初始化后的输出相同
(x.tab)[0]=1;
(x.tab)[1]=1;
(x.tab)[2]=1;
(x.tab)[3]=1;
(x.tab)[4]=1;
(x.tab)[5]=1;
(x.tab)[6]=1;
(x.tab)[7]=1;
(x.tab)[8]=1;
cout<<(x.tab[0]);
}
上面的代码如何产生下面的输出?这是可解释的还是未定义的行为-鼻妖?我认为是第二个,因为输出矩阵的大小与制表符数组的大小无关。
2293236 2293240 2293244 2293248 2293252 2293256 2293260 2293264 2293268
2293272 2293276 2293280 2293284 2293288 2293292 2293296 2293300 2293304
2293308 2293312 2293316 2293320 2293324 2293328 2293332 2293336 2293340
2293344 2293348 2293352 2293356 2293360 2293364 2293368 2293372 2293376
2293380 2293384 2293388 2293392 2293396 2293400 2293404 2293408 2293412
2293416 2293420 2293424 2293428 2293432 2293436 2293440 2293444 2293448
2293452 2293456 2293460 2293464 2293468 2293472 2293476 2293480 2293484
2293488 2293492 2293496 2293500 2293504 2293508 2293512 2293516 2293520
2293524 2293528 2293532 2293536 2293540 2293544 2293548 2293552 2293556
--------------------------------
Process exited with return value 0
Press any key to continue . . .
使用未初始化的变量调用UB。你还没有初始化x,所以是的,你正在调用未定义行为
相关文章:
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- c++11评估顺序(未定义的行为)
- 使用mysql c++连接器的未定义引用
- 从python调用openMP共享库时,未定义opnMP函数
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 具有外部"c"和程序集的未定义函数
- 此增量后语句是否会导致未定义的行为?
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在C++中使用内联方法时出现未定义的符号错误
- 对 Scalar ::Scalar() 的未定义引用