Я хотел бы добавить индекс массива к литералу в точке определения, так как мне не нужен массив после этого начального доступа:
int func(int index) {
return {1, 2, 3, 4, 5}[index];
}
Примечание: элементы массива сложнее, чем в этом примере. Также я опускаю пограничные проверки. Мне просто любопытно, допускает ли синтаксис C такую конструкцию / ярлык.
Компиляция приведенного выше кода приводит к:
error: syntax error before `{' token
Python-эквивалент того, что я пытаюсь достичь на C:
def func(index):
return [1,2,3,4,5][index]
2 ответа
Вы можете использовать так называемые составные литералы :
#include <stdio.h>
int main(void) {
printf("%d\n",
(int[]){1,2,3,4,5}[2]);
return 0;
}
См. Раздел проекта стандарта C 6.5.2.5 Составные литералы
Сгенерированный машинный код в любом случае будет одинаковым.
int func(int index) {
return (int[]){1, 2, 3, 4, 5}[index];
}
Лучшая, более читаемая версия:
int func(int index) {
const int[] local = {1, 2, 3, 4, 5};
return local[index];
}
См. Раздел проекта стандарта C 6.5.2.5 Составные литералы
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.