Точка с запятой и запятая в к

Почему эти программы работают, и почему я не получаю ошибку «отсутствует точка с запятой»? С этим вопросом я хочу спросить, когда я могу пропустить точку с запятой. Насколько я знаю, точка с запятой — это терминатор предложения. Правильно ли писать операторы такого типа, в которых мы используем запятую вместо точки с запятой. В программе 1 есть отрицание, затем печать и затем getchar () в одну строку без точки с запятой и без запятой. аналогично в программе 2 используются отрицание, assignment, printf и getchar (). Сколько строк мы можем написать, используя запятую, а не точку с запятой.

program1:

#include <stdio.h>
int main()
{
int i = 0xAA;
~i, printf("%X\n", i),getchar();
return 0;
}

программа 2:

#include <stdio.h>
int main()
{
int i = 0xAA;
i=~i, printf("%X\n", i),getchar();
return 0;
}

-6

Решение

Это потому, что запятая является оператором в C. Согласно второму изданию языка программирования C:

Пара выражений, разделенных запятой, оценивается слева направо, а тип и значение результата являются типом и значением правого операнда.

Имейте в виду, что это также говорит:

Запятые, разделяющие аргументы функции, переменные в объявлениях и т. Д., не операторы запятой, и не гарантируют оценку слева направо.

Распространенный пример забывания этого объясняется Вот.

Так что обе программы верны (хотя только во второй инвертированное значение i печатается).

1

Другие решения

Почему пропущенная точка с запятой не приходит в c

Потому что это не пропало.

8

По вопросам рекламы [email protected]