Давеча лицезрел как рефлектор сам с собой дискутировал.
Давеча лицезрел как рефлектор сам с собой дискутировал.
ну, во-первых, cout вы вряд ли в МК будете использовать... а во-вторых, все константы обрабатываются еще на этапе компиляции, так что лишних преобразований МК делать не будет.Ivanoff-iv писал(а):на эти преобразования тратятся и ресурсы мк... или нет?
Он - может и не будет. Но абдуринщиков, которые printf в микроконтроллер пихают — пруд пруди! Они еще флоаты любят на всяких тиньках... Жестокие!..ARV писал(а):cout вы вряд ли в МК будете использовать
скажу больше: я тут многих никак не могу убедить, что printf - удобно, и его не только можно, но и нужно применять в проектахEddy_Em писал(а):Но абдуринщиков, которые printf в микроконтроллер пихают — пруд пруди!
Код: Выделить всё
print('1');
print(1);
print("1");
Код: Выделить всё
cout << '1' << 1 << "1";Код: Выделить всё
operator<<('1');
operator<<(1);
operator<<("1");
Код: Выделить всё
void print(int val)
{
....
}Технически, это не так (как уже выше объяснили). Для оператора "<<" '1' - символ, 1 - просто число (равно как и "1" - строка) - совершенно разные сущности. А то, что при преобразовании этих разных сущностей в строку для вывода на экран, получается внешне одно и то же - это уже совсем другое дело. Для каждого типа работает своя перегрузка оператора "<<", а вовсе не одна и та же функция.ARV писал(а):объяснения, с какого перепугу '1' и 1 оператор << "стандартно" считает одним и тем же, я так и не получил
Не соберет, потому что в плюсах const char* неявно к int не приводится.почему не соберёт? Нет в LIBC функции print(). Создавайте ее какой хотите )
Код: Выделить всё
#include <stdio.h>
int print(int i) {
printf("%d\n",i);
}
int main(void)
{
int j;
j=156;
print(j);
j=14;
print(j);
}
Код: Выделить всё
print("1");
Код: Выделить всё
template <typename T> T max(T x, T y)
{
if (x < y)
return y;
else
return x;
}
int main()
{
int a = max(10,15);
double f = max(123.11, 123.12);
char *s = max("last", "first");
}