История изменений
Исправление 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. Куда там влезает уномжение - вообще плевать, это тут ни при чём.