for(int i=0; i<len_arr; i++)
if(arr[i] == some_num){
printf("The idx of %d is: %d\n", some_num, i);
break;
}
if(i == len_arr)
printf("Number not found.\n");
Это не работает. Потому что i
не может быть доступен за пределами цикла.Как узнать, что цикл был разбит раньше?
Я подумал о двух способах достижения того, что я хочу.
Но мой вопрос: Есть ли какой-либо другой более элегантный способ, чтобы сделать эффект?
Способ 1:
int i;
for(i=0; i<len_arr; i++)
if(arr[i] == some_num){
printf("The idx of %d is: %d\n", some_num, i);
break;
}
if(i == len_arr)
printf("Number not found.\n");
Способ 2:
for(int i=0; (i<len_arr) && (printf("Number not found.\n")); i++)
if(arr[i] == some_num){
printf("The idx of %d is: %d\n", some_num, i);
break;
}
Я бы проголосовал Way1. Или добавьте логический флаг, который не является таким элегантным, но четко указывает, что вы хотите сделать. – marom
Вы уверены, что ваш второй способ работает? – CinCout
Первый вопрос..Что вы не создаете свой собственный объем «для цикла». просто поставьте скобки. Я что-то упускаю? – Spanky