LINUX.ORG.RU

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

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

С чего ты взял что оно будет unsigned int? Оно будет signed. Куда там влезает умножение - вообще плевать, это тут ни при чём. Промоутится не результат а аргументы.

И хватит ставить мне фейспалмы, лучше почитай стандарт. А конкретно своё сложение (или умножение) можешь и компилятором проверить.

#include <stdio.h>

int main(void) {
  unsigned short a,b;
  unsigned int c,d;
  a = b = c = d = 0xFFFF;
  printf("%u\n", (a*b)/10);
  printf("%u\n", (c*d)/10);
  printf("%u\n", (0xFFFF*0xFFFF)/10);
  return 0;
}

Второй printf выдаст правильный ответ, первый и третий - неправильный из-за int-переполнения.

Исправление firkax, :

С чего ты взял что оно будет unsigned int? Оно будет signed. Куда там влезает умножение - вообще плевать, это тут ни при чём. Промоутится не результат а аргументы.

И хватит ставить мне фейспалмы, лучше почитай стандарт. А конкретно своё сложение (или умножение) можешь и компилятором проверить.

#include <stdio.h>

int main(void) {
  unsigned short a,b;
  unsigned int c,d;
  a = b = c = d = 0xFFFF;
  printf("%u\n", (a*b)/10);
  printf("%u\n", (c*d)/10);
  printf("%u\n", (0xFFFF*0xFFFF)/10);
  return 0;
}

Второй printf выдаст правильный ответ т.к. ывыражение будет посчитано ещё компилятором

Исправление firkax, :

С чего ты взял что оно будет unsigned int? Оно будет signed. Куда там влезает умножение - вообще плевать, это тут ни при чём. Промоутится не результат а аргументы.

И хватит ставить мне фейспалмы, лучше почитай стандарт. А конкретно своё сложение (или умножение) можешь и компилятором проверить.

Исправление firkax, :

С чего ты взял что оно будет unsigned int? Оно будет signed. Куда там влезает умножение - вообще плевать, это тут ни при чём.

И хватит ставить мне фейспалмы, лучше почитай стандарт. А конкретно своё сложение (или умножение) можешь и компилятором проверить.

Исправление firkax, :

С чего ты взял что оно будет unsigned int? Оно будет signed. Куда там влезает умножение - вообще плевать, это тут ни при чём.

И хватит ставить мне фейспалмы, лучше почитай стандарт.

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

С чего ты взял что оно будет unsigned int? Оно будет signed. Куда там влезает уномжение - вообще плевать, это тут ни при чём.