при написании кода я наблюдаю одну вещь в моем коде, связанную с сравнением значения битового поля с отрицательными целыми числами.
У меня есть один элемент структуры без знака размером один бит и один без знака целое число.Когда я сравниваю отрицательное значение с переменной unsigned int, я получаю ожидаемый результат как 1, но когда я сравниваю элемент структуры с отрицательным значением, я получаю противоположный результат как 0.
#include <stdio.h>
struct S0
{
unsigned int bit : 1;
};
struct S0 s;
int main (void)
{
int negVal = -3;
unsigned int p = 123;
printf ("%d\n", (negVal > p)); /*Result as 1 */
printf ("%d\n", (negVal > s.bit));/*Result as 0 but expected 1 */
return 0;
}
Я сомневаюсь, что еслиЯ сравниваю отрицательное значение с unsigned int, после чего происходит балансировка (неявное приведение типов).Но если я сравниваю член структуры unsigned int, почему неявное приведение типов не происходит.Поправьте меня, если я пропущу какие-либо основы битовых полей?