Как в функции на языке Си отследить тот факт, что был передан аргумент, лежащий вне задекларированного (uint64_t) диапазона?

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

void simple(uint64_t x)
{
  unsigned long long t = (unsigned long long) x;

  if(t > (unsigned long long) UINT64_MAX) 
  {
     printf("Out, x = %" PRIu64 "\n", x);
  }
  else 
  {
     printf("In, x = 0x%llx\n", x);
  }
}

int main()
{
  simple(UINT64_MAX);   // x = 0xFFFFFFFFFFFFFFFF
  simple(UINT64_MAX+2); // x = 0x1

  return 0;  
}

Как в функции на языке Си отследить тот факт, что был передан аргумент, лежащий вне задекларированного (uint64_t) диапазона? При передаче большего числа, функция работает, но использует только младшие байты переданного аргумента.


Ответы (0 шт):