C# числовые константы

объявление двумерного массива динамически:

    #include<iostream>
    using namespace std;
    int main()
    {
        int x = 3, y = 3;

        int **ptr = new int *[x];

        for(int i = 0; i<y; i++)
        {
            ptr[i] = new int[y];
        }
        srand(time(0));

        for(int j = 0; j<x; j++)
        {
            for(int k = 0; k<y; k++)
            {
                int a = rand()%10;
                ptr[j][k] = a;
                cout<<ptr[j][k]<<" ";
            }
            cout<<endl;
        }
    }

Теперь в приведенном выше коде мы взяли двойной указатель и присвоили ему динамическую память и дали значение столбцов. Здесь выделенная память предназначена только для столбцов, теперь для строк нам нужен цикл for и присваивать значение для каждой строки динамической памяти. Теперь мы можем использовать указатель именно так, как мы используем 2D-массив. В приведенном выше примере мы тогда присваивали случайные числа нашему двумерному массиву (указателю). Все о DMA двумерного массива.

19
задан Adi Lester 15 August 2012 в 08:02
поделиться

8 ответов

int rule = 0;
rule |= 0x80;

http://msdn.microsoft.com/en-us/library/kxszd0kx.aspx | оператор определяется для всех типов значения. Я думаю, что это будет, привел к намеченному результату. "| =" оператор, или затем присвойте оператор, который является просто сокращением от правила = правило | 0x80.

Одна из более изящных вещей о C# - то, что он позволяет Вам сделать сумасшедшие вещи как типы значения злоупотребления просто на основе их размера. 'Интервал' является точно тем же, поскольку байт, кроме компилятора бросит предупреждения, при попытке использовать их в качестве обоих одновременно. Просто придерживаться одного (в этом случае, интервал) работает хорошо. Если Вы заинтересованы готовность приблизительно на 64 бита, можно указать int32, но все ints являются int32s, даже работающим в x64 режиме.

6
ответ дан 30 November 2019 в 02:07
поделиться

C# не имеет литерального суффикса для байта. u = uint, l = долго, ул. = ulong, f = плавание, m = десятичное число, но никакой байт. Необходимо бросить его.

34
ответ дан 30 November 2019 в 02:07
поделиться

Это работает:

rule = (byte)(rule | 0x80);

, По-видимому, выражение 'правило | 0x80' возвращает интервал, даже если Вы определяете 0x80 как 'байт константы 0x80'.

11
ответ дан 30 November 2019 в 02:07
поделиться

Термин, который Вы ищете, является "Литеральным", и к сожалению C# не имеет литерала байта.

Вот список все литералы C# .

9
ответ дан 30 November 2019 в 02:07
поделиться

Согласно Спецификация ECMA, pg 72 там не является никаким литералом байта. Только целочисленные литералы для типов: интервал, uint, долго, и ulong.

3
ответ дан 30 November 2019 в 02:07
поделиться

Похож на Вас, вероятно, просто придется сделать это ужасный путь: http://msdn.microsoft.com/en-us/library/5bdb6693.aspx .

1
ответ дан 30 November 2019 в 02:07
поделиться

К сожалению, Ваше единственное обращение за помощью должно сделать это просто способ, которым Вы имеете. Нет никакого суффикса для маркировки литерала как байт. | оператор не предусматривает неявное преобразование, как присвоение (т.е. инициализация) было бы.

0
ответ дан 30 November 2019 в 02:07
поделиться

, По-видимому, выражение 'правило | 0x80' возвращает интервал, даже если Вы определяете 0x80 как 'байт константы 0x80'.

я думаю, что правило является числами как 0x80 значения по умолчанию к интервалу, если Вы не включаете литеральный суффикс. Таким образом для выражения rule | 0x80, результатом будет интервал, так как 0x80 является интервалом и правилом (который является байтом), может безопасно быть преобразован в интервал

0
ответ дан 30 November 2019 в 02:07
поделиться
Другие вопросы по тегам:

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