【C++】判断语句中对变量的合理定义
哎,又是一个变量定义的锅!让我来帮你理清楚这个C++中的坑。首先,C++的变量定义可不像哈利波特的魔杖,说变就变。你得记住,同一个作用域内,变量不能重复定义,即使你是在if语句里定义的。就像《权力的游戏》里的铁王座,位置只有一个,变量的定义也只能有一个。
抱歉,你这是在if里重新定义G和B,而不是修改它们。这样编译器会以为你定义了两个新变量,但它们只在if块里有“帐篷”。所以,修改代码时:
1. 把矩阵定义提到if外面,确保它们在整个作用域可见。
2. 在if块里,只修改它们的值,而不是重新定义。
比如,先定义G, B, A,再在条件里给它们新值。记得别像你那样,把if里当做一个“造变量的车间”啦!这样不仅编译器高兴,代码也更优雅。
先概括来讲,这篇博客的核心:
- C++中,不允许重复定义同一个变量,否则保留的初次定义的值(虽然编译能通过)
- 涉及到判断的多分支时,应在进判断分支之前定义好变量,如果在分支中分别定义会出现编译错误(找不到变量定义)
问题 1:变量覆盖失败
报错
首先我定义了三个初始的矩阵G, B, A,希望当m=4时,能打印"Larger transform matrices",并且更新三个矩阵的值(包括大小)。
int m = 4;
mat G = { {1.0, 0.0, 0.0},{0.5, 0.5, 0.5},{0.5, -0.5, 0.5},{0.0, 0.0, 1.0} };
mat B = { {1, 0, 0, 0},{0, 1, -1, 1},{-1, 1, 1, 0},{0, 0, 0, -1} };
mat A = { {1, 0},{1, 1},{1, -1},{0, -1}};
if (m == 4) {cout << "Larger transform matrices" << endl;mat G = { {1.0/4, 0.0, 0.0},{-1.0/6, -1.0/6, -1.0/6},{-1.0/6, 1.0/6, -1.0/6},{1.0/24, 1.0/12, 1.0/6},{1.0/24, -1.0/12, 1.0/6},{0.0, 0.0, 1.0}};mat B = { {4.0, 0.0, 0.0, 0.0, 0.0},{0.0, -4.0,