«language-lawyer» 태그된 질문

프로그래밍 언어 및 환경의 공식 또는 권위있는 사양의 복잡성에 대한 질문

13
최적화되지 않는 무한 빈 루프를 만들려면 어떻게해야합니까?
C11 표준은 일정한 제어식을 가진 반복문이 최적화되어서는 안된다는 것을 암시하는 것으로 보입니다. 이 답변 에서 조언을 얻었습니다. 표준 초안의 섹션 6.8.5를 구체적으로 인용합니다. 제어 표현식이 상수 표현식이 아닌 반복문은 구현에 의해 가정 될 수 있습니다. 이 답변에서 루프와 같은 루프 while(1) ;는 최적화되지 않아야한다고 언급합니다 . 그렇다면 ... Clang / …


5
Double의 "=="연산자 정의
어떤 이유로 나는 클래스의 .NET Framework 소스를 몰래 들여 Double오고 선언 ==이 다음 과 같은 것을 알았습니다 . public static bool operator ==(Double left, Double right) { return left == right; } 모든 연산자에 동일한 논리가 적용됩니다 . 그러한 정의의 요점은 무엇입니까? 어떻게 작동합니까? 왜 무한 재귀를 일으키지 않습니까?
126 c#  .net  language-lawyer 


2
같은 이름의 Lambda 캡처 및 매개 변수-누가 다른 사람을 섀도 잉합니까? (clang 대 gcc)
auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0 이상 은 "You 're using clang ++!"을 출력합니다. 캡처 foo 가 사용되지 않았 음을 경고합니다 . g ++ 4.9.0 이상 은 "You 're using g ++!"을 출력합니다. 사용되지 않는 매개 …

6
Lambda 자체 복귀 : 합법적입니까?
이 상당히 쓸모없는 프로그램을 고려하십시오. #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } 기본적으로 우리는 스스로를 반환하는 람다를 만들려고합니다. MSVC가 프로그램을 컴파일하고 실행합니다. …

3
작동해야하는 스위치에서 케이스를 건너 뛰기 위해 if (0)을 사용하고 있습니까?
C ++ switch 문에서 두 가지 경우가 모두 세 번째 경우로 넘어 가고 싶은 상황이 있습니다. 특히 두 번째 경우는 세 번째 경우로 넘어 가고 첫 번째 경우도 두 번째 경우 를 통과 하지 않고 세 번째 경우로 넘어갑니다 . 나는 멍청한 생각을 가지고 시도해 보았고 효과가있었습니다! 나는 두 번째의 …


5
쉼표가있는 삼항 연산자가 실제 경우에 하나의 표현식 만 평가하는 이유는 무엇입니까?
저는 현재 C ++ Primer 책으로 C ++를 배우고 있으며이 책의 연습 중 하나는 다음과 같습니다. 다음 표현이 무엇을하는지 설명하십시오. someValue ? ++x, ++y : --x, --y 우리는 무엇을 압니까? 삼항 연산자가 쉼표 연산자보다 우선 순위가 높다는 것을 알고 있습니다. 이항 연산자를 사용하면 이해하기 쉬웠지만 삼항 연산자를 사용하면 약간 어려움을 …

2
3 개의 주요 C ++ 컴파일러에서 다르게 컴파일되는 프로그램. 어느 것이 맞습니까?
이전 질문에 대한 흥미로운 후속 조치 (실제적으로 크게 중요하지는 않음) : 왜 C ++에서 변수를 선언 할 때 변수 이름을 괄호로 묶을 수 있습니까? 괄호 안의 선언과 삽입 된 클래스 이름 기능 을 결합하면 컴파일러 동작과 관련하여 놀라운 결과를 얻을 수 있다는 것을 알았습니다 . 다음 프로그램을 살펴보십시오. #include <iostream> …

8
C ++에서 C 헤더를 사용할 때 std :: 또는 전역 네임 스페이스의 함수를 사용해야합니까?
C는 정확히는 아니지만 C ++의 하위 집합입니다. 따라서 우리는 이름을 약간 변경하여 C ++에서 대부분의 C 함수 / 헤더를 사용할 수 있습니다 ( stdio.hto cstdio, stdlib.hto cstdlib). 제 질문은 실제로 일종의 의미 론적입니다. C ++ 코드에서, 내가 호출 할 수 있습니다 (GCC 컴파일러의 최신 버전을 사용) printf("Hello world!");과 std::printf("Hello world!");와 …
113 c++  language-lawyer  std 

8
"콜백 지옥"이란 무엇이며 RX가이를 해결하는 방법과 이유는 무엇입니까?
누군가 JavaScript와 node.js를 모르는 사람을 위해 "콜백 지옥"이 무엇인지 설명하는 간단한 예제와 함께 명확한 정의를 제공 할 수 있습니까? 언제 (어떤 종류의 설정에서) "콜백 지옥 문제"가 발생합니까? 왜 발생합니까? "콜백 지옥"은 항상 비동기 계산과 관련이 있습니까? 아니면 단일 스레드 애플리케이션에서도 "콜백 지옥"이 발생할 수 있습니까? 나는 Coursera에서 Reactive Course를 수강했고 …

2
C ++ 20은 파일에 저장되는 소스 코드를 요구합니까?
그러나 약간 이상한 질문이지만 올바르게 기억한다면 C ++ 소스 코드는 파일을 저장할 파일 시스템이 필요하지 않습니다. 카메라를 통해 손으로 쓴 종이를 스캔하는 컴파일러가 있으면이를 준수 할 수 있습니다. 실제로 그다지 의미가 없지만. 그러나 C ++ 20은 이제 file_name. 이제 소스 코드가 항상 파일에 저장되어야 함을 의미합니까?

2
효과적으로 최종 대 최종-다른 동작
지금까지 나는 사실상 최종 및 최종 이 어느 정도 동등하며 JLS가 실제 동작에서 동일하지 않으면 유사하게 취급 할 것이라고 생각했습니다. 그런 다음이 인위적인 시나리오를 발견했습니다. final int a = 97; System.out.println(true ? a : 'c'); // outputs a // versus int a = 97; System.out.println(true ? a : 'c'); // …

9
새로운 표준 버전을 사용하는 C ++에서 자동 동작 변경이 있었습니까?
(목록이 아닌 요점을 증명하기 위해 한두 가지 예를 찾고 있습니다.) C ++ 표준의 변경 (예 : 98에서 11, 11에서 14 등)이 기존의 잘 구성되고 정의 된 동작 사용자 코드의 동작을 자동으로 변경 한 적이 있습니까? 즉, 최신 표준 버전으로 컴파일 할 때 경고 나 오류가 없습니까? 메모: 구현 자 / …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.