По модулю в порядке эксплуатации

Если необходимо разбить на несколько разную длину: например, у вас есть дата и время в строке формата форматирования strangeStr = "07092016090532"; 07092016090532 (Дата: 07.09.2016 Время: 09:05:32)

public static IEnumerable<string> SplitBy(this string str, int[] chunkLength)
    {
        if (String.IsNullOrEmpty(str)) throw new ArgumentException();
        int i = 0;
        for (int j = 0; j < chunkLength.Length; j++)
        {
            if (chunkLength[j] < 1) throw new ArgumentException();
            if (chunkLength[j] + i > str.Length)
            {
                chunkLength[j] = str.Length - i;
            }
            yield return str.Substring(i, chunkLength[j]);
            i += chunkLength[j];
        }
    }

, используя:

string[] dt = strangeStr.SplitBy(new int[] { 2, 2, 4, 2, 2, 2, 2 }).ToArray();
37
задан Adam Harte 24 June 2010 в 21:44
поделиться

6 ответов

Это зависит от языка, но в языках стиля C % имеет такой же приоритет, как * и /. Это означает, что если они появляются в одном и том же выражении (без круглых скобок), то порядок зависит от ассоциативности. В данном случае % обычно лево-ассоциативен, поэтому операторы будут выполняться в порядке слева направо.

37
ответ дан 27 November 2019 в 01:38
поделиться

Если ваш вопрос касается языков программирования, тогда да,% имеет тот же порядок, что и * и /

См. в этой таблице .

5
ответ дан 27 November 2019 в 01:38
поделиться

Относительные уровни приоритета операторов, найденные во многих языках стиля C, следующие:

table

Википедия - Порядок операций

23
ответ дан 27 November 2019 в 01:38
поделиться

Оператор по модулю%, используемый во многих языках программирования, не является обычным явлением в чистой математике. Так что это скорее вопрос того, как оператор трактуется в языках программирования, и это различается для разных языков.

0
ответ дан 27 November 2019 в 01:38
поделиться

Для C ++ он имеет тот же приоритет, что и умножение и деление. Принимайте их по мере их поступления, слева направо.

0
ответ дан 27 November 2019 в 01:38
поделиться

По крайней мере, в C ++ и Java, modulo (% ) имеет тот же уровень приоритета, что и умножение и деление.

Поскольку % , / и * (обычно) левоассоциативны, они оцениваются слева направо.

(Спасибо Марку за указание на ассоциативность операторов )

6
ответ дан 27 November 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: