Назад к вопросам
JuniorТеорияЧасто
Какая строка не скомпилируется?
#include <iostream>
int main() {
int a = 2.9;
int b(2.9);
double c{2};
int d{2.9};
std::cout << a << b << c << d << '\n';
}int d{2.9};: фигурные скобки не дают отбросить дробную часть 2.9
- Ждать, что
=запретит сужение:int a = 2.9;компилируется и отбрасывает дробную часть, поэтомуaравна2; ошибкой сужение делают только фигурные скобки. - Ждать, что круглые скобки работают как фигурные:
int b(2.9);преобразует значение так же, как=, и компилируется; сужение проверяют только{}.
- Почему
double c{2};компилируется, аint n = 2; double r{n};компилятор clang отвергает? - Как переписать
int d{2.9};, чтобы строка компилировалась, если дробную часть нужно отбросить?