powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Странное поведение переменной
8 сообщений из 8, страница 1 из 1
Странное поведение переменной
    #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
Странное поведение переменной
    #39902070
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maksim8542откуда взялось 6?

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

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

Из мусора.

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

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


ТС прав, это хрень какая-то, и цикл не повторяется. Все банально, но не работает ((
...
Рейтинг: 0 / 0
Странное поведение переменной
    #39902131
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тупой, убери ; у тебя цикл без тела
Код: plaintext
1.
for (i = 1; i<=5; i++); {
...
Рейтинг: 0 / 0
Странное поведение переменной
    #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
Странное поведение переменной
    #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
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Странное поведение переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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