2015-01-24 2 views
-4

Я неисправного понять почему бы выход из цикла на значение символьной переменной я = «\ x1»C++ символ переменной значение « x1»

#include <iostream> 
    using namespace std; 
    int main() 
    { 
     char i; 

     for (i = 1; i < 10, i++;) 
     {  
      cout << i << endl; 
     } 

     return 0; 
    } 

Может кто-нибудь пожалуйста объяснить такое поведение?

+0

Пожалуйста, помогите мне понять, а не наоборот. Я новичок в C++ –

+3

Используйте отладчик и выполняйте код. – Borgleader

+0

@Borgleader Вы понимаете, что люди, новые для программирования, не знают о концепции отладки, верно? – dmg

ответ

0
for (i = 1; i < 10; i++) 

Вы написали инструкцию for неправильно.

+0

Но это допустимый синтаксис для оператора. Программа построена правильно. –

+1

Программа может быть скомпилирована, это не значит, что она правильная. – Windoze

+1

@peeppeep ** здание ** правильно и ** работает ** правильно - это две разные вещи. – dmg

2

Это неправильно

for (i = 1; i < 10, i++;) 
       /*^should be ; */ 
+0

Но это допустимый синтаксис для оператора. Программа построена правильно. –

+0

нет, если вы хотите, чтобы цикл for работал правильно. –

+1

Он строит правильно из-за ';' в конце, но он не работает правильно? –

1

Вы только объявили 3 области для цикла, но положить инкремент заявление в средней зоне, и оставили свой район инкремента пустым. Я не знаю, какой оператор в средней области, который ваш компилятор захочет выполнить. Лучше не пытаться быть симпатичным и обмануть свой компилятор. Не говоря уже о каком-то коллеге, который прочитает ваши годы кода и уйдет WTF ???

для цикла имеет 3 различных областей, разделенных точкой с запятой:

  1. Область инициализации. Вы можете объявить здесь столько переменных, сколько хотите. Они могут быть разделены запятыми.
  2. Испытательная площадь. Вот где выражение проверяется, должен ли цикл продолжаться.
  3. Почтовый цикл. Эта область кода запускается после каждого цикла.

Попробуйте сделать это простым. Если это будет сложнее, используйте цикл while.

1

Причина, по которой я заканчивается как 1, заключается в том, что когда i ++ равно нулю, что завершает цикл, тогда я стану 1 (это то, что делает оператор ++, который вы использовали). Как заметил другой, как только вы исправили свой код, переместив i ++ из условия, заменив запятую точкой с запятой, я сделаю все до 10 по желанию.

Смежные вопросы