Лучший способ сделать это:
#ifndef FALSE
#define FALSE 0
#elif FALSE != 0
#undef FALSE
#define FALSE REWRITE_PROGRAM("FALSE")
#endif
#ifndef TRUE
#define TRUE 1
#elif TRUE != 1
#undef TRUE
#define TRUE REWRITE_PROGRAM("TRUE")
#endif
Где REWRITE_PROGRAM это макрос, который вызывает функцию (при условии, номер строки и исходный файл заранее), что, с использованием современных нейронных сетей, будет разумно переписать чтобы избежать противоречивых определений TRUE или FALSE, где TRUE определяется как нечто, отличное от 1, и FALSE - что-то иное, чем 0. После того, как он генерирует исправленный код и создает его, он выполнит новую версию приложения и выйти.
В качестве резервной копии AI переписывания также будет уверен, что его новые предположения верны, добавив больше кода с REWRITE_PROGRAM
, если он когда-либо сталкивается с случаем, когда его допущения неверны.
В конечном итоге программа будет переписывать себя повторно до тех пор, пока она не будет правильно, и таким образом вам не придется беспокоиться о том, как определяются ИСТИНА и ЛОЖЬ, конфликты и будут ли эти определения изменяться в будущем.
Но (!0) == 1 в любом случае Я думаю, вы можете обнаружить, что это зависит от реализации. Но это не имеет большого значения, если у вас есть условие, как если (bool_value == TRUE) { ... } , которые вы не должны, на самом деле. –
! является булевым оператором в C и возвращает 1, если аргумент, который вы ему дали, равен нулю и возвращает 0 в противном случае. Люди иногда думают! является оператором «swap the bits», но это не так. Но ваш вопрос хорошо сделан. При написании C вы можете полагаться на «false» равным нулю, но ошибочно полагаться на «истину», имеющую какое-либо конкретное значение, вы можете быть уверены только в том, что это не ноль :) – eemz