Мне любопытно, почему следующий код возвращает отрицательные числа, хотя каждая отдельная инициализация переменной и fuction в этой программе представляет собой unsigned int. Я думал, они всегда должны были быть позитивными?Указатели игнорируют неподписанный признак в C?
#include <stdio.h>
unsigned int main()
{
unsigned int ch = 0;
unsigned int asteriskValue = 0;
while(ch!=27)
{
ch = getch();
if (ch == 224)
{
increaseDecrease(&asteriskValue);
}
printf("%d",asteriskValue);
}
}
void increaseDecrease(unsigned int *value)
{
unsigned int upOrDown;
upOrDown = getch();
if(upOrDown == 72)
(*value)--;
else if(upOrDown == 80)
(*value)++;
}
Целые числа без знака являются не только положительными, но также могут быть '0'. Использование Неправильный формат-спецификатор вызывает неопределенное поведение. – Olaf
'unsigned' не является признаком, а спецификатором типа. C не поддерживает признаки. – Olaf