Они, блин, такие китайские :(

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Чтоб пятница не пропадала ...

void setup() {
	uint8_t a = 90;

	// Ищу три четверти от a
	uint8_t b = a * 3 / 4;

	// А теперь то же самое, но по частям
	uint8_t c = a * 3;
	c /= 4;

	Serial.begin(115200);
	Serial.println(b);
	Serial.println(c);
}
void loop(){}

а печатает, сцуко, 

67
3

и это в то время, как все кому не лень бороздя там чего-то ... Куда бежать, православные?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

ну дык человек читает слева направо, а компьютер справа налево :)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

Чтоб пятница не пропадала ...

void setup() {
	uint8_t a = 90;

	// Ищу три четверти от a
	uint8_t b = a * 3 / 4;

	// А теперь то же самое, но по частям
	uint8_t c = a * 3;
	c /= 4;

	Serial.begin(115200);
	Serial.println(b);
	Serial.println(c);
}
void loop(){}

а печатает, сцуко, 

67
3

и это в то время, как все кому не лень бороздя там чего-то ... Куда бежать, православные?

(270-256)/4 а что там не так?

SAB
Offline
Зарегистрирован: 27.12.2016

Гениально. Компьютеры - арабы.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

ЕвгенийП пишет:

Чтоб пятница не пропадала ...

void setup() {
	uint8_t a = 90;

	// Ищу три четверти от a
	uint8_t b = a * 3 / 4;

	// А теперь то же самое, но по частям
	uint8_t c = a * 3;
	c /= 4;

	Serial.begin(115200);
	Serial.println(b);
	Serial.println(c);
}
void loop(){}

а печатает, сцуко, 

67
3

и это в то время, как все кому не лень бороздя там чего-то ... Куда бежать, православные?

Евгений - а в чем проблема?

Все отрабатывается "по Вами писанному" и работает адекватно.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

ua6em пишет:

ЕвгенийП пишет:

Чтоб пятница не пропадала ...

void setup() {
	uint8_t a = 90;

	// Ищу три четверти от a
	uint8_t b = a * 3 / 4;

	// А теперь то же самое, но по частям
	uint8_t c = a * 3;
	c /= 4;

	Serial.begin(115200);
	Serial.println(b);
	Serial.println(c);
}
void loop(){}

а печатает, сцуко, 

67
3

и это в то время, как все кому не лень бороздя там чего-то ... Куда бежать, православные?

(270-256)/4 а что там не так?

а ниче что максимум для байта это 255?
 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

вспоминаю как кучу лет назад в институте писали конвертор из пользой записи в нормальную человеческую. И еще в 1С какой то версии древней был глюк что а=а+1 не равнялось а=1+а :(

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

на десктопном писюке тоже самое, китайское подсунули!!

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andycat пишет:

ну дык человек читает слева направо, а компьютер справа налево :)

Выфсёврёти!!! :-(
Тока бы патроллить :(

Поменял пятую строку на

uint8_t b = (a * 3 )/ 4;

НИПАМАГЛО!!! Всё тоже самое!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andycat пишет:

ua6em пишет:

ЕвгенийП пишет:

Чтоб пятница не пропадала ...

void setup() {
	uint8_t a = 90;

	// Ищу три четверти от a
	uint8_t b = a * 3 / 4;

	// А теперь то же самое, но по частям
	uint8_t c = a * 3;
	c /= 4;

	Serial.begin(115200);
	Serial.println(b);
	Serial.println(c);
}
void loop(){}

а печатает, сцуко, 

67
3

и это в то время, как все кому не лень бороздя там чего-то ... Куда бежать, православные?

(270-256)/4 а что там не так?

а ниче что максимум для байта это 255?
 

семь, восемь, где-то так, ну не сорок жеж )))
PS я в курсе о 255...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

(270-256)/4 а что там не так?

А чё она разными записями разные ризультаты даёть? :-(

Туды ййо в качель!

rkit
Offline
Зарегистрирован: 23.11.2016

a * 3 имеет тип int

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

всю пятницу испортил

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:

(270-256)/4 а что там не так?

А чё она разными записями разные ризультаты даёть? :-(

Туды ййо в качель!

так это жеж лживый Ваш C!!! )))
 

void setup() {
  uint8_t a = 90;

  // Ищу три четверти от a
  uint8_t b = a * 3 / 4;

  // А теперь то же самое, но по частям
  uint8_t c; // = a * 3;  c /= 4;

  Serial.begin(115200);
  Serial.println(b);
  Serial.println(c = a * 3);
  Serial.println(c /=4);
}
void loop(){}

67
14
3

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

update: любопытно конечно

Start
67
3
67
root@oo677dit:/home/andycat/testc/t1# cat t1.c
#include <stdio.h>
#include <stdint.h>

int main(int argc, char * argv[]) {
    printf("Start\n");
    uint8_t a=90;
    uint8_t b=a*3/4;
    uint8_t d=(a*3)/4;
    uint8_t c=a*3;
    c /= 4;
    printf("%d\n", b);
    printf("%d\n", c);
    printf("%d\n", d);
    return 0;
}

root@oo677dit:/home/andycat/testc/t1#

Debian

root@oo677dit:/home/andycat/testc/t1# ./a.out
Start
67
3
root@oo677dit:/home/andycat/testc/t1# cat t1.c
#include <stdio.h>
#include <stdint.h>

int main(int argc, char * argv[]) {
    printf("Start\n");
    uint8_t a=90;
    uint8_t b=a*3/4;
    uint8_t c=a*3;
    c /= 4;
    printf("%d\n", b);
    printf("%d\n", c);
    return 0;
}

root@oo677dit:/home/andycat/testc/t1#

 

b707
Offline
Зарегистрирован: 26.05.2017

не понял, где смеятся?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016
void setup() {
  uint8_t a = 90;

  // Ищу три четверти от a
  uint8_t b = a * 3 / 4;

  // А теперь то же самое, но по частям
  uint8_t c; // = a * 3;  c /= 4;

  Serial.begin(115200);
  Serial.println(b);
  Serial.println();
  Serial.println(b = a / 4);
  Serial.println(b *= 3);
  Serial.println();
  Serial.println((a * 3)>>2);
  Serial.println();
  Serial.println(c = a * 3);
  Serial.println(c /= 4);
}
void loop(){}

67

22
66

67

14
3

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

b707 пишет:

не понял, где смеятся?

наверное негде, получается что компилятору пофиг размерность выходного выражения, он считает с максимальной размерностью у себя в "мозгах" а потом выдает обрезанный результат - не?

b707
Offline
Зарегистрирован: 26.05.2017

andycat пишет:

наверное негде, получается что компилятору пофиг размерность выходного выражения, он считает с максимальной размерностью у себя в "мозгах" а потом выдает обрезанный результат - не?

 так вроде Евгений раз десять про это писал в последние пару лет.

И не обязательно с "максимальной" - существуют четкие правила преобразования типов - что к чему приводится перед вычислением. Например все выражения байтами, чарами и uint8 приводятся к uint16. Именно этот случай мы тут и видим.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andycat пишет:

b707 пишет:

не понял, где смеятся?

наверное негде, получается что компилятору пофиг размерность выходного выражения, он считает с максимальной размерностью у себя в "мозгах" а потом выдает обрезанный результат - не?

при операциях сдвига он оперирует беззнаковым int

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

недавно обсуждали:
 

uint8_t v = stream->read();
if (chksum == static_cast<uint16_t>(v << 8) + lchksum)  // было if (chksum == (v << 8) + lchksum)

 

rkit
Offline
Зарегистрирован: 23.11.2016

b707 пишет:

Например все выражения байтами, чарами и uint8 приводятся к uint16. Именно этот случай мы тут и видим.

Бред какой. 3 имеет тип int, вот и всё.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

не понял, где смеятся?

Над rkit :-)

Чем-то "товарища Огурцова" из "Карнавальной ночи" напомнил :-)

Green
Offline
Зарегистрирован: 01.10.2015

ЕвгенийП, сколько вам лет? У меня дед по 100 раз смотрит подобные фильмы. И про войну ещё. Только ему за 80.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

rkit пишет:

b707 пишет:

Например все выражения байтами, чарами и uint8 приводятся к uint16. Именно этот случай мы тут и видим.

Бред какой. 3 имеет тип int, вот и всё.

Блин! в этом и смысл шутки! Ну нахрена ты влез????

Ты же хоть и приметный чел, но новый. Тут до тебя был некий Архат, с которым было много смешных историй. Одна из них была КАК РАЗ про то, что он не знал, не понимал и не хотел знать о том, что в Си вычисления производятся с int. Шутка Жени  - напоминание старожилам о том инциденте.

А ты вместо того, чтобы посмеяться с коллегами, просто обосрал шутку Жене. Ну не ..удак ли ты? После этого.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Green пишет:

ЕвгенийП, сколько вам лет? У меня дед по 100 раз смотрит подобные фильмы. И про войну ещё. Только ему за 80.

Женя чуть старше меня. Мне 52. Точнее - он сам ответит.

Я, к примеру, смотрел "Карнавальную ночь" более 100 раз точно. И цветной вариант и черно белый.  Кстати интересен факт, что никто ничего не раскрашивал, а были ДВА варианта фильма - в цвете для кино и чб для телевизоров.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Green пишет:

ЕвгенийП, сколько вам лет? 

59

Green
Offline
Зарегистрирован: 01.10.2015

ЕвгенийП пишет:

59


Тут 2 варианта. Очевидно память хорошая.)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

ЕвгенийП пишет:

59


Тут 2 варианта. Очевидно память хорошая.)

кто бы сомневался)))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

не знаю, как кто, а я пересматриваю и советскую классику и "их". И "Касабланку" и "Небесный тихоход". "И в джазе только девушки", и "Три плюс два", и "В бой идут одни старики".

А то все знают анекдот про "Хау мач воч - севен воч" а откуда он - почти никто не знает. Молодежь то точно не знает. Я это место из Касабланки почти на каждой пьянке детям (которым от 30 до 40 лет) показываю ;)).

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:

это место из Касабланки 

Вот оно https://www.youtube.com/watch?v=Th0G8rkhBqg

Green
Offline
Зарегистрирован: 01.10.2015

ua6em пишет:

кто бы сомневался)))


Вообще, КМК, память это потёмки...
Уже не раз рассказывал. У меня бабуля (царство небесное) 1904 г. По её словам, с 9-ти лет помнила всё "как на ладони"... И действительно, когда она рассказывала случаи из, к примеру, 1936-го, с ТАКИМИ подробностями! Типа, во что была одета, какая стояла погода, какие тучи были в небе! Я просто офигевал. А тут жена с вечера говорит, поедь встречь утром людей, только не вздумай... Так пипец! Поехал, встретил, привёз, а вот про "не вздумай" забыл напрочь!( Вот тебе и память.(

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

Вообще, КМК, память это потёмки...
Уже не раз рассказывал. У меня бабуля (царство небесное) 1904 г. По её словам, с 9-ти лет помнила всё "как на ладони"...

ты еще забыл упомянуть какую вкусную газировку пила на ярмарке в 1912 году, такой больше нет )))

Green
Offline
Зарегистрирован: 01.10.2015

Это да. Только вот про газировку уже Я запамятовал.)
Но. По крайней мере, я запомнил с какой радостью они ездили на работу в 20-х годах...
Ну и вообще, интересно иметь информацию из первых уст, а не из газет каких то.

kolyn
Offline
Зарегистрирован: 18.01.2019
void setup() {
  Serial.begin(115200);
  Serial.println(32767,BIN);
  Serial.println(32768,BIN);
  Serial.println((32767+1),BIN);
  Serial.println(-32768,BIN); 
}
void loop(){}

Вывод в сериал:
111111111111111
1000000000000000
Тут все понятно, КиР:  "*2.3 Константы.
Целая константа, например 1234, имеет тип int."(если явно не указан
иной тип)

А дальше???
11111111111111111000000000000000
11111111111111111000000000000000

WTF, почему, где читать?

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

Это да. Только вот про газировку уже Я запамятовал.)

про газировку другая прабабушка рассказывала, моего приятеля, в 90 лет она у внука спрашивала, как это голова болит? она же кость, болеть не может )))

Green
Offline
Зарегистрирован: 01.10.2015

kolyn пишет:

void setup() {
  Serial.begin(115200);
  Serial.println(32767,BIN);
  Serial.println(32768,BIN);
  Serial.println((32767+1),BIN);
  Serial.println(-32768,BIN); 
}
void loop(){}

Вывод в сериал:
111111111111111
1000000000000000
Тут все понятно, КиР:  "*2.3 Константы.
Целая константа, например 1234, имеет тип int."(если явно не указан
иной тип)

А дальше???
11111111111111111000000000000000
11111111111111111000000000000000

WTF, почему, где читать?

32767+1 = -32768
У println нет метода int, есть long.

kolyn
Offline
Зарегистрирован: 18.01.2019

Green пишет:

kolyn пишет:

void setup() {
  Serial.begin(115200);
  Serial.println(32767,BIN);
  Serial.println(32768,BIN);
  Serial.println((32767+1),BIN);
  Serial.println(-32768,BIN); 
}
void loop(){}

Вывод в сериал:
111111111111111
1000000000000000
Тут все понятно, КиР:  "*2.3 Константы.
Целая константа, например 1234, имеет тип int."(если явно не указан
иной тип)

А дальше???
11111111111111111000000000000000
11111111111111111000000000000000

WTF, почему, где читать?

32767+1 = -32768
У println нет метода int, есть long.

Дурак задал дурацкий вопрос, не понимая как работает print(). Он считает, что раз аргумент "константа" (что в корне не верно) - подавай ему вывод в бинарном виде (16 бит)  этой константы.

Потом  дурак полез в исходники - умные делают наоборот. Дурак на каплю поумнел))

Green
Offline
Зарегистрирован: 01.10.2015

Всё нормально. Дурак - это тот кто не хочет разбираться.)