Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
muryj
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 6
#1

Цикл For, Разница между знаками - C++

04.06.2013, 20:56. Просмотров 308. Ответов 6
Метки нет (Все метки)

Первый вариант:
for(int i(0); i < N; i++)
Второй вариант:
for(int i = 0 ; i < N; i++)
Оба варианта работают идентично, но препод придрался к записи "(0)" в первом варианте и теперь заставляет узнать, почему так, ибо сам он видит подобное первый раз в жизни. Что скажете? Желательно со ссылками на какую-нибудь книгу.
Вот код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
 setlocale(LC_ALL , "Russian");
 int N;
 cout << "Введите размер матрицы ";
 cin >> N;
 int **Matrix = new int*[N];
  for(int i(0); i < N; i++)
   Matrix[i] = new int[N];
 
 cout << "Заполните матрицу " << N << "x" << N << "\n";
 
 for(int i(0); i < N; i++)
  for(int j(0); j < N; j++)
  {
   cin >> Matrix[i][j];
  }
 
 bool Triugolnay = true;
 for(int i(0); i < N; i++)
  for(int j(1); j < i; j++)
  {
   if(Matrix[i][j] != 0)
   {
    Triugolnay = false;
    break;
   }
  }
 
 if(Triugolnay)
  cout << "Матрица нижне-треугольная\n";
 else cout << "Матрица не нижне-треугольная\n";
 
 
 for(int i(0); i < N;i++)
  delete [] Matrix[i];
 delete [] Matrix;
 _getch();
 return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 20:56     Цикл For, Разница между знаками
Посмотрите здесь:

Как подсчитать кол-во символов между двумя знаками? - C++
В вообщем суть задания в том, чтобы посчитать кол-во символов между двумя знаками, может кто написать код для этого? фулл задание:...

Разница между T **a и T *a[const_size] - C++
T c_a; // Здесь тип c_a это T(*) T **d_a = (T**) malloc(sizeof(T) * size); for (i = 0; i &lt; size; ++i) { d_a = (T*)...

В чем разница между С и С++ - C++
Возник вопрос в чем жи разница между С и С++ кроме того, что в С++ есть классы а в С их нету ?

Разница между seekg() и seekp() - C++
В чём же разница? Вот допустим открыл я файл: fstream file(&quot;trans.dat&quot;,ios::out|ios::in|ios::binary); Какая разница между...

Разница между объявлениями указателей - C++
Есть такое: int *p; и такое: int *p = new int; Поясните, пожалуйста, в чём разница между этими объявлениями указателей?

Какая Разница между сортировками? - C++
Какая разница между сортировками, если в итоге все виды сортируют одинаково. Т е. Результат одинаковый

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
04.06.2013, 21:02     Цикл For, Разница между знаками #2
Цитата Сообщение от muryj Посмотреть сообщение
но препод придрался к записи "(0)"
лолс, что это за препод такой, раз не знает альтернативный вариант инициализации.
muryj
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 6
04.06.2013, 21:06  [ТС]     Цикл For, Разница между знаками #3
Не будем называть имена
А можете источник дать?
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 830
04.06.2013, 21:15     Цикл For, Разница между знаками #4
в данном случае разницы никакой потому, что int - это простой тип который не обладает нетривиальным конструктором.
C++
1
2
int i = 0;//1
int i(0);//2
Что в случае 1, что в 2 создается целочисленный литерал и потом i инициализируется им. В современным компиляторах происходит оптимизация, которая сходу создает инициализированный int.

Добавлено через 4 минуты
Надеюсь я привел корректный пример. Если нет, то поправьте кто-нибудь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
using std::cout;
 
struct Foo
{
    int x;
    Foo(): x(0) { cout << "Default constructor\n"; }
    explicit Foo(int a): x(a) { cout << "Simple constructor\n"; }
    Foo(const Foo &obj): x(obj.x) { cout << "Copy\n"; }
    Foo& operator = (const Foo &obj)
    {
        if (this == &obj) return *this;
        x = obj.x;
        cout << "operator =\n";
        return *this;
    }
};
 
int main()
{
    Foo x1 = Foo(5);//с оптимизацией компилятора: simple, без - simple->copy
    Foo x2(5); //simple
    return 0;
}
tony_pershin
16 / 16 / 1
Регистрация: 05.03.2013
Сообщений: 36
04.06.2013, 21:22     Цикл For, Разница между знаками #5
Сия фича называется explicit type conversion. Преподу можешь показать ссылку на msdn: http://msdn.microsoft.com/ru-ru/libr...v=vs.100).aspx
Kastaneda
Форумчанин
Эксперт С++
4490 / 2852 / 227
Регистрация: 12.12.2009
Сообщений: 7,245
Записей в блоге: 1
Завершенные тесты: 1
04.06.2013, 21:43     Цикл For, Разница между знаками #6
Цитата Сообщение от tony_pershin Посмотреть сообщение
Сия фича называется explicit type conversion. Преподу можешь показать ссылку на msdn: http://msdn.microsoft.com/ru-ru/libr...v=vs.100).aspx
Это не совсем то. По ссылке другая допустимая форма записи привидения типов. Т.е. язык допускает
C++
1
std::cout << (int)'a';
а так же
C++
1
std::cout << int('a');
вот.
А в примере ТС'а немного другое - это форма инициализации скалярных типов с помощью синтаксиса вызова конструктора. Б.Эккель в книге "Философия С++" называет это "псевдоконструктор". Но термин спорный, т.к. никакого конструктора не вызывается, даже "псевдо".
Могу предположить, что этот "псевдоконструктор" понадобился в языке например для таких вещей
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template <class T>
class Foo
{
public:
    Foo() 
    {
        bar = T();
    }
 
    T bar;
};
...
Foo<int> baz;
хотя может у этого есть другое объяснение, а может его и вовсе нет, добавили просто для синтаксической совместимости с пользовательскими типами.

Добавлено через 1 минуту
Цитата Сообщение от Kastaneda Посмотреть сообщение
По ссылке другая допустимая форма записи привидения типов.
там же даже написано
Explicit type conversions can also be specified using the "cast" syntax. The previous example, rewritten using the cast syntax, is:
C++
1
d = (float)i;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2013, 21:47     Цикл For, Разница между знаками
Еще ссылки по теме:

Разница между resize и reserve - C++
Всем доброе утро! Следующий вопрос не дает мне спать по ночам - в чём таки разница между resize и reserve класса vector?.. Думала, что...

Разница между cout и _tprintf - C++
Господа, когда я вывожу на экран значение ф-ции GetComputerNameEx с помощью cout, получаются кракозябры, когда же я делаю это с помощью...

Разница между вектором в борланде и VS - C++
Если возращять вектор внутри структуры из ф-ции то в борланде все ОК.А вот в VS size возвращяет правильное число элементов,но сами элементы...

Разница между char и int - C++
Известно что для чар выделяется 1 байт (8 бит) для инт 4 байта (32 бита). Так почему нельзя в чар присвоить 10 и больше до 255 в виде...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
tony_pershin
16 / 16 / 1
Регистрация: 05.03.2013
Сообщений: 36
04.06.2013, 21:47     Цикл For, Разница между знаками #7
Kastaneda, интересная штука, не знал про это, спасибо.
Yandex
Объявления
04.06.2013, 21:47     Цикл For, Разница между знаками
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru