Existing answers have already examined the root of the problem: this cycle for
for (int interval = 1, snr_db = 20.0; [...]; [...]) {
declares two type variables int
, one of which has the shadow of the double snr_db
outer region. For a deeper understanding, add some background.
From N1570 (last draft for C11) , ยง6.8.5.3 p1 :
Statement
for
(
-1 ;
-2 ;
-3 )
statement
: expression-2 , . -3 void . -1 , , , , ; . -1 , void .
, for
, -1 , . . , .
, , , - . for
. -1 void, , . , :
[...]
int interval;
for (interval = 1, snr_db = 20.0; [...]; [...]) {
-1 , ( ). , interval
.
, , , , :
for (int interval = (snr_db = 20.0), 1; [...]; [...]) {
interval
, , snr_db = 20.0
, 1
( ) interval
. C, , , . , , .
interval
-1 snr_db
:
snr_db = 20.0;
for (int interval = 1; [...]; [...]) {