Почему эти программы работают, и почему я не получаю ошибку «отсутствует точка с запятой»? С этим вопросом я хочу спросить, когда я могу пропустить точку с запятой. Насколько я знаю, точка с запятой — это терминатор предложения. Правильно ли писать операторы такого типа, в которых мы используем запятую вместо точки с запятой. В программе 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;
}
Это потому, что запятая является оператором в C. Согласно второму изданию языка программирования C:
Пара выражений, разделенных запятой, оценивается слева направо, а тип и значение результата являются типом и значением правого операнда.
Имейте в виду, что это также говорит:
Запятые, разделяющие аргументы функции, переменные в объявлениях и т. Д., не операторы запятой, и не гарантируют оценку слева направо.
Распространенный пример забывания этого объясняется Вот.
Так что обе программы верны (хотя только во второй инвертированное значение i
печатается).
Почему пропущенная точка с запятой не приходит в c