Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Странное поведение переменной / 8 сообщений из 8, страница 1 из 1
12.12.2019, 17:17
    #39902041
Maksim8542
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение переменной
Пробую побаловаться с c++ и происходит странное: Сразу после инициализации переменной i имеет значение 6, хотя инициализировалась она нулем, а после , в цикле, присваивается значение 1. Внимание - вопрос: откуда взялось 6?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#include <iostream>
using namespace std;
int main() {
	int a[21][21];
	int i=0,j=0;
	for (i = 1; i<=5; i++); {
		cout << i;
		for (j = 1; j <= 5; j++) {
			cin >> a[i][j];
		}

	}

	for (i = 1; i <= 5; i++); {
		for (j = 1; j <= 5; j++) {
			cout << a[j][i] << "  ";
		}
		cout<<endl;
	}
}
...
Рейтинг: 0 / 0
12.12.2019, 18:03
    #39902070
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение переменной
Maksim8542откуда взялось 6?

Из мусора. Поскольку твой нуль никому не был нужен, компилятор вообще выкинул
инициализацию переменной и сразу перешёл к присваиванию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.12.2019, 19:40
    #39902111
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение переменной
Maksim8542, я не знаю как работает PVS студия (тут один господин недавно очень активно ее продвигал)
но я убежден что она отметит безмысленное использование инициализации и предложит
перенести декларации в выражение for. И также предложит избежать повторного использования
переменной в разных ролях. Возможно.
...
Рейтинг: 0 / 0
12.12.2019, 20:02
    #39902117
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение переменной
Dimitry Sibiryakov

Maksim8542откуда взялось 6?

Из мусора.

Маловероятно, думаю оптимизатор поставил бы 1 чтобы не инициализировать повторно. Скорее всего ТС посмотрел отладчиком что в i после цикла, там гарантированно 6.

PS mayton прав, не стоит так писать. Это стиль С, в С++ это не рекомендуется.
...
Рейтинг: 0 / 0
12.12.2019, 20:21
    #39902125
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение переменной
Откомпилировал код ТС в MSVC2017, там выводится 6
Код: plaintext
1.
2.
	for (i = 1; i <= 5; i++); {
		cout << i;


ТС прав, это хрень какая-то, и цикл не повторяется. Все банально, но не работает ((
...
Рейтинг: 0 / 0
12.12.2019, 20:25
    #39902131
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение переменной
Я тупой, убери ; у тебя цикл без тела
Код: plaintext
1.
for (i = 1; i<=5; i++); {
...
Рейтинг: 0 / 0
12.12.2019, 20:27
    #39902132
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение переменной
И чтобы не наступить на эти грабли снова, пиши
Код: plaintext
1.
for (int i = 1; i<=5; i++) {


а это не пиши
Код: plaintext
1.
int i=0,j=0;



PS Для индексов лучше не int, а size_t
...
Рейтинг: 0 / 0
13.12.2019, 00:38
    #39902245
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение переменной
Вот какая-то деревянная проверка ccpcheck сразу подсвечивает предупреждение.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
$ cppcheck --enable=all --inconclusive -v test.cpp 
Checking test.cpp ...
Defines: 
Includes:
Platform:Native
[test.cpp:8]: (warning, inconclusive) Suspicious use of ; at the end of 'for' statement.
[test.cpp:16]: (warning, inconclusive) Suspicious use of ; at the end of 'for' statement.
(information) Cppcheck cannot find all the include files. Cppcheck can check the code without the include files found. But the results will probably be more accurate if all the include files are found. Please check your project's include directories and add all of them as include directories for Cppcheck. To see what files Cppcheck cannot find use --check-config.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Странное поведение переменной / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]