LINUX.ORG.RU

История изменений

Исправление ASM, (текущая версия) :

Ответ протух, надо тестировать на этом:

#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; }

Ошибку вида:

 if (a=3)
ловят все

Ошибку вида:

 int32_t a;
 b=a<<33;
тоже ловят все.

Чем моя хуже?

Исходная версия ASM, :

Ответ протух, надо тестировать на этом:

#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; }

Ошибку вида:

 if (a=3)
ловят все

Ошибку вида:

 int32_t a;
 b=a<<33;
тоже ловят все.

Чем эта хуже?