Implementing checksum add without carry in C
It appears code is simply exclusive or-ing the arguments.  Sounds like a "add without carry".


"Is my logic for the implementation correct?"
Appears correct except the range of acceptable values is not clearly stated.
Gotcha 1.  What is UINT?  If UINT is narrower than int/unsigned, the arguments will be widened and va_arg(valist,UINT); is problematic.  Recommend unsigned instead.
Gotcha 2. arg1 = va_arg(valist,UINT); arg2 = va_arg(valist,UINT); Only makes sense if n it at least 1 or 2.  Should test for that first.
if (num &gt; 2) {
    for (i = 2; i &lt; num; i++) { looks dodgy.
Simplify

va_list valist;
va_start(valist, num);
unsigned result = 0;
while (num-- &gt; 0) {
  result ^= va_arg(valist, unsigned);
}
va_end(valist);
return result;