Должен ли я использовать C (99) логию? (Также C ++ Booleans в C ++?)

StackOverflow https://stackoverflow.com/questions/3010201

  •  26-09-2019
  •  | 
  •  

Вопрос

Я не сделал много программирования C, но когда я делаю, когда мне нужно ложное, я положил 0, когда я хочу правда, я положил 1, (например, в то время как (1)), в других случаях я использую такие вещи, как «пока (PTR)» или «если (х)».

Должен ли я попробовать использовать Booleans C99, я должен порекомендовать их другим, если я помогаю людям новым для программирования изучения C Основы C (думая о CS 1 ?? Студенты)?

Я уверен, что компилятор Visual Studio поддерживает Bools C99, но и много проектов (приложения с открытым исходным кодом и C в промышленности) компилируется для C89? Если я не буду использовать C Bools, я должен хотя бы сделать что-то вроде #define true 1 #define false 0?

Также как насчет C ++ Booleans (для C ++)?

Это было полезно?

Решение

В C ++ нет причин не использовать его. В C, я использую только int Для этой задачи без каких-либо #define или что-то подобное. Переменные имена, такие как isDefinition достаточно ясны, чтобы указать, что происходит, на мой взгляд.

Конечно, нет ничего плохого в определении вашего собственного боля или использовать <stdbool.h>.

Другие советы

Да, вы должны использовать языковые абстракции, когда они доступны. Когда я использую более старый компилятор C, я все еще создаю немного абстракции Bool. Использование литералов в вашем коде является очень плохим практикой.

Booleans C ++ в порядке, поскольку они являются частью языка и поддерживаются в основном любой компилятор C ++ в наши дни.

C99 Booleans кажется хорошей идеей, но просто имейте в виду, будет ли код, который вы пишете сегодня, когда-либо нужно использовать в проекте C89 ...

Компилятор может сделать лучшую оптимизацию, когда он знает, что переменная логическая. Также при использовании INT MAN проще ввести ошибки при использовании в побитовом контексте, так как IntS может быть случайно установлен на значения, отличные от 1

Используйте Bool в C ++. Он был там годами, и каждый компилятор C ++ поддерживает его, используйте его в C, если ваш код требует других функций C99. Не используйте его в коде Pre-C99, поскольку любое ненулевое значение будет интерпретировано как true, и использование Определения может привести к ошибкам, которые трудно отслеживать (некоторые функции библиотеки C документируются, чтобы вернуть любой ненулевой int ценность, и даже если это вообще плохая практика, чтобы написать что-то вроде

if (var==TRUE) { ... }

Такие вещи могут сломаться, и может даже вести себя по-разному под разными компиляторами / операционными системами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top