что эта строка кода C++ означает “соль <? =f ((1 <<n)-1, я, 0) +abs (P [я]) *price”;

Мог любой помогать мне понять следующую строку кода:

sol< ?=f((1<< n)-1,i,0)+abs(P[i])*price;

Я изучаю алгоритм записанный C++ использования, и он имеет следующий оператор < ?= . Моя проблема с пониманием < ?= оператор. Также, когда я компилирую этот код с помощью g ++ компилятор, он дает сообщение об ошибке для вышеупомянутой строки строки кода кода

следующее является возвращенным сообщением об ошибке.

Hello.cpp: В функциональном ‘международном основном ()’:

Привет cpp:115: ошибка: ‘memset’ не был объявлен в этом объеме

Привет cpp:142: ошибка: ожидаемое первичное выражение прежде‘?’ маркер

Привет cpp:142: ошибка: ожидаемое первичное выражение прежде ‘=’ маркер

Привет cpp:142: ошибка: ожидаемый ‘:’ прежде‘’; маркер

Привет cpp:142: ошибка: ожидаемое первичное выражение прежде‘’; маркер

Возможно, < ?= это не ни один оператор, но я не могу понять то, что точно делает эта строка кода.

Заранее спасибо в течение времени Вы потратили читать это сообщение.

6
задан 10 revs, 7 users 57% 21 January 2015 в 19:49
поделиться

5 ответов

Это расширение GNU. По сути, это оператор "ниже, чем".

int a = 3;
a <?= 2;
cout << a << endl; // prints 2, because 2 < 3

a <?= 10;
cout << a << endl; // prints 2 as well, because 10 > 2

Подробнее здесь

23
ответ дан 8 December 2019 в 04:29
поделиться

Это может быть почти строка PHP-кода: все, что нужно, - это удалить пробел, который нужно сформировать в конце.

<?= foo(); ?>

эквивалентно

<?php echo foo(); ?>
1
ответ дан 8 December 2019 в 04:29
поделиться

Взгляните на Грамматика C здесь

Единственное использование ? - в тернарном операторе:

conditional_expression
    : logical_or_expression
    | logical_or_expression '?' expression ':' conditional_expression
    ;

Где ? следует за выражением. В вашем случае этого не происходит. Итак, ваш код недействителен C.

0
ответ дан 8 December 2019 в 04:29
поделиться

Эта строка не является строкой кода. Вот почему он не компилируется. Бессмысленно спрашивать, что он делает.

-1
ответ дан 8 December 2019 в 04:29
поделиться

Чтобы быть понятным для тех, кто читает это и не может понять, и >?= являются версиями назначения и >?, которые являются устаревшими расширениями GCC, которые служили цели (x>y)?x:y или (x соответственно.

Поэтому x будет x = x что равно x = (x

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

2
ответ дан 8 December 2019 в 04:29
поделиться