我是 C 的新手!我要使用 for 回圈迭代整數,但得到錯誤
error: ‘frame’ was not declared in this scope
auto position_array = (*frame)[i][j];
但是正如您在下面的代碼中看到的那樣,它被宣告為
auto ds = data_file.open_dataset(argv[1]);
// auto frame = data_file.read_frame(ds, 0); // inside the loop
for (int i = 0; i < 3; i)
auto frame = data_file.read_frame(ds, i);
for (size_t i = 0; i < nsamples; i) {
for (size_t j = 0; j <= 2; j) { // j<=2 assign all columns
auto position_array = (*frame)[i][j];
}
corr.sample(frame);
}
corr.finalise();
如果我使用注釋的第二行,它作業正常。但是現在我想遍歷data_file.read_frame(ds, i)的第二個變數,錯誤出現了!我究竟做錯了什么?我是否需要宣告int frame = 0; 在 for 回圈之前?為簡潔起見,我只發布帶有錯誤的代碼,以防有人需要查看整個代碼,不客氣!!
uj5u.com熱心網友回復:
聽起來你需要一個嵌套的 for 回圈。使用
for (int i = 0; i < 3; i)
{
auto frame = data_file.read_frame(ds, i);
for (size_t j = 0; j < nsamples; j) {
for (size_t k = 0; k <= 2; k) { // j<=2 assign all columns
auto position_array = (*frame)[i][j];
}
corr.sample(frame);
}
}
讓你得到 each frame,然后處理每一幀的每一個元素。
uj5u.com熱心網友回復:
這個 for 回圈
for (int i = 0; i < 3; i)
auto frame = data_file.read_frame(ds, i);
相當于
for (int i = 0; i < 3; i)
{
auto frame = data_file.read_frame(ds, i);
}
那就是 for 回圈的子陳述句形成了它的一個作用域。在范圍之外,變數框架不可見。
此外frame,在回圈的每次迭代中都會重新創建變數。
來自 C 17 標準(9.4 選擇陳述句)
- ...選擇陳述句中的子陳述句(每個子陳述句,以 if 陳述句的 else 形式)隱含地定義了一個塊作用域 (6.3)。如果選擇陳述句中的子陳述句是單個陳述句而不是復合陳述句,就好像它被重寫為包含原始子陳述句的復合陳述句。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364165.html
上一篇:串列理解中的兩個for回圈在Python中產生奇怪的輸出
下一篇:打開一個JSON檔案并編輯結構
