Исправление ASM, (текущая версия) :
Пожалуй с Вами соглашусь:
sh-4.2$ cat main.c
#include <stdio.h>
#include <inttypes.h>
void a(void) {
uint32_t a=10,b=11;
int64_t c;
c=(a-b);
printf("C: %"PRIi64"\n",c);
}
void b(void) {
uint8_t a=10,b=11;
int16_t c;
c=(a-b);
printf("C: %"PRIi16"\n",c);
}
int main(void) { a(); b(); return 0; }
sh-4.2$ gcc-6.2.0 -m32 -Wall -Wextra -Wpedantic main.c && ./a.out
C: 4294967295
C: -1
Но потенциальной проблемы это не отменяет.
На заметку: использование PRIi64 конечно правильно, но код получается уж крайне ублюдочный. ИМХО.
Исходная версия ASM, :
Пожалуй с Вами соглашусь:
sh-4.2$ cat main.c
#include <stdio.h>
#include <inttypes.h>
void a(void) {
uint32_t a=10,b=11;
int64_t c;
c=(a-b);
printf("C: %"PRIi64"\n",c);
}
void b(void) {
uint8_t a=10,b=11;
int16_t c;
c=(a-b);
printf("C: %"PRIi16"\n",c);
}
int main(void) { a(); b(); return 0; }
sh-4.2$ gcc-6.2.0 -m32 -Wall -Wextra -Wpedantic main.c && ./a.out
C: 4294967295
C: -1
Но потенциальной проблемы это не отменяет.