2017-01-20 9 views
0

Можно ли умножить, используя i** в C? Например, я могу увеличить i с помощью i++. Почему i** не работает в C?Умножение на i ** возможно ли в C? Как i ++, почему я ** не работает в C?

#include <stdio.h> 
int main(void) 
{ 
    int result; 
    for (int i = 2; i < 100; i**){ 
     result = i + 1; 
     printf("%i\n", result); 
    } 


    return 0; 
} 
+3

Просто потому, что на языке С. нет '**' оператора. – usr

+2

i ++ означает добавить 1. i ** должен означать что? Умножить на 1? –

ответ

3

Нет, это не возможно. В C нет никакого оператора, например **, в отличие от унарного приращения (++) и уменьшения (--) операторов. Вы должны попробовать i *= i.

+0

Спасибо @haccks – Yellowfun

+0

@Yellowfun; Добро пожаловать. – haccks

1

Возможно, но вместо того, чтобы i**, который не работает, вам нужно использовать:

for (int i = 2; i < 100; i *= i) 
+0

Спасибо ^) @artm – Yellowfun

0

Умножение на i** возможно ли в C? Например i++ почему i** не работает в C?
Нет, это невозможно. для вашего второго ответа на вопрос объясняется как: В основном, приращение и декремент имеют исключительное использование в качестве предварительного приращения и пошагового приращения, а язык не может быть расширен, только если кому-то нужна дополнительная функциональность, поскольку он замедляется из-за расширения его грамматика.

Так что большинство используемых ++i,i++,--i,i-- присутствуют, а не другие

Вы можете использовать некоторые коды, как это для вашей задачи:

i*=i; 
=i*i; 
1

Вообще, умножение операция не используется в for цикле приращения/уменьшение часть т.к. предположительно наш variable(i) начало из 0, после этого каждый раз умножение стать 0.

+1

Спасибо! @rsp – Yellowfun

2

"i ++" является сокращением для "i = i + 1". Если бы было «i **», то оно, по расширению, означало бы «i = i * 1» и было бы невероятно бесполезным. Поэтому они никогда не реализовывали это.

Даже после редактирования, чтобы уточнить грамматику, из вашего вопроса все еще не ясно, что вы ожидаете, что «i **» будет выполняться как «i = i * i». Я предполагаю, что это то, что вы имели в виду от ответа, который вы приняли. Если вы научитесь ясно объяснять вещи другим, вы обнаружите, что мыслите более четко и можете решить ответ на многие вопросы для себя.

+0

Не согласен! Если (i> = 2), то тогда это (i **) имеет смысл. Но это не было реализовано, потому что мы часто начинаем отсчет с 0 или 1. Но в таком случае (i = 2 или больше) мы можем использовать i * = i. PS: Я только начинаю изучать программирование. – Yellowfun

+0

Если у вас есть какая-либо критика, пожалуйста, скажите мне. Это лучший способ учиться. – Yellowfun

+1

Прочтите то, что я сказал близко: i ++ эквивалентен «i = i +1», поэтому «i **» будет эквивалентен «i = i * 1». Если в этом случае i = 2, то «i **» будет равно «i = 2 * 1», и мы закончили бы с i, оставшимся равным 2. Таким образом, «i **» становится бесполезной. Кажется, вы предполагаете, что «i **» будет расширяться до «i = i * i», и да, эта операция была бы полезна. Однако вы никогда нигде не заявляли об этом.Если бы у вас было тогда, вы могли бы взглянуть на него и осознали, что существует несогласованность между «i ++» и вашим предложенным поведением для «i **». непоследовательное поведение неизменно приводит к ошибкам. – AlastairG