왜이 코드에 대해 불평 컴파일러되지 않습니다std :: string에 이중 할당 - 컴파일 오류가 없습니까?
#include <string>
#include <iostream>
int main()
{
std::string a;
a = 2.3;
std::cout << "A:" << a << std::endl;
return 0;
}
GCC는 MSVC 이것에 대해 걱정하지 않는 것 모두, 그것은 분명히 잘못된 것입니다 실제로 어쨌든 작동하지 않는 경우에도 !
출력은 다음과 같습니다
A:
OUCH! 내 프로그램에서 감지되지 않은 오류가 발생합니다.
경고를 켭니까? Clang은 다음을 발생시킵니다 : 경고 : 'double'에서 'char'로 암시 적으로 변환하면 값이 2에서 변경됩니다.3에서 2 [-witeral-conversion] ' – Rapptz
당신이 말한대로하고 있습니다. double 값을 65.3으로 변경하면'A : A'가 출력됩니다 (65는 문자 'A'의 ASCII 값입니다). – Blastfurnace
내 GCC (4.82)에서'-Wall -Wextra '조차'-Wconversion'이 필요하다는 경고를하지 않습니다. – Galik