Как C обрабатывает условное выражение, такое как n >= 1 <= 10
?C против Python - приоритет оператора в условных операторах
Первоначально я думал, что он будет оценен как n >= 1 && 1 <= 10
, так как он будет оцениваться на Python. Поскольку 1 <= 10
всегда верно, второе место and
является избыточным (логическое значение X && True
эквивалентно логическому значению X
).
Однако, когда я запускаю его с помощью n=0
, условное вычисляется как true. Фактически, условное значение всегда, кажется, оценивается как истинное.
Это был пример, который я смотрел на:
if (n >= 1 <= 10)
printf("n is between 1 and 10\n");
И вы просите нас ответить на этот вопрос за вас? Как это вам поможет? вы пытались скомпилировать его? –
Вы сначала прочитали главу о приоритете оператора? – RiaD
Я считаю, что это не законно, я уверен, что вам нужно будет сказать if (n> = 1 && n <= 10), но не цитируйте меня на этом, поэтому я оставляю это как комментарий и не ответ. Как только вы настроите его таким образом, приоритет будет оставлен вправо. И я думаю, что C и C++ используют «ленивые» проверки, поэтому .. если левая сторона не удалась, она даже не будет проверять правильную сторону. –