«undefined-behavior» 태그된 질문

컴파일러, 인터프리터 또는 런타임 시스템이 강요 할 필요가없는 언어의 규칙을 위반하는 프로그램을 컴파일하거나 실행하면 예기치 않은 결과가 발생합니다. "정의되지 않은"데이터 유형 또는 리턴 값에 관한 질문에이 태그를 사용하지 마십시오. 이 경우 [정의되지 않은] 태그를 대신 사용해야합니다.

5
정의되지 않은 동작 및 시퀀스 포인트
"시퀀스 포인트"란 무엇입니까? 정의되지 않은 동작과 시퀀스 포인트의 관계는 무엇입니까? 나는 종종 a[++i] = i;기분이 나아지도록 재미 있고 복잡한 표현을 사용 합니다. 왜 사용을 중단해야합니까? 이 내용을 읽은 경우 후속 질문 Undefined behavior and sequence points reloaded 를 방문하십시오 . (참고 : 이것은 Stack Overflow의 C ++ FAQ에 대한 항목 …




5
C ++ 표준은 초기화되지 않은 bool이 프로그램을 중단시킬 수 있습니까?
C ++ 의 "정의되지 않은 동작" 은 컴파일러가 원하는 모든 작업을 수행 할 수 있다는 것을 알고 있습니다. 그러나 코드가 충분히 안전하다고 가정하면서 충돌이 발생했습니다. 이 경우 실제 문제는 특정 컴파일러를 사용하는 특정 플랫폼에서만 최적화가 활성화 된 경우에만 발생했습니다. 문제를 재현하고 최대한 단순화하기 위해 여러 가지를 시도했습니다. 여기라는 함수의 추출물의 …

22
초기화되지 않은 지역 변수가 가장 빠른 난수 생성기입니까?
초기화되지 않은 로컬 변수가 정의되지 않은 동작 ( UB )이며 값에 트랩 표현이있을 수 있으므로 추가 작업에 영향을 줄 수 있지만 때로는 시각적 표현에만 임의의 숫자를 사용하고 다른 부분에서는 더 이상 사용하지 않으려는 경우가 있습니다. 예를 들어, 프로그램은 시각 효과에서 임의의 색상으로 무언가를 설정합니다. void updateEffect(){ for(int i=0;i<1000;i++){ int r; …

11
f (i = -1, i = -1) 동작이 정의되지 않은 이유는 무엇입니까?
나는 평가 위반 순서에 대해 읽고 있었고 , 그들은 나를 당황스럽게하는 예를 제시합니다. 1) 스칼라 객체의 부작용이 동일한 스칼라 객체의 다른 부작용에 비해 순서가 맞지 않으면 동작이 정의되지 않습니다. // snip f(i = -1, i = -1); // undefined behavior 이러한 맥락에서, iA는 스칼라 객체 명백하게 수단 산술 유형 (3.9.1), …

14
왜 일부 플랫폼에서는 그렇지 않고 다른 플랫폼에서는 루프 종료에 사용합니까?
저는 최근에 C를 배우기 시작했고 C를 ​​주제로 수업을 들었습니다. 나는 현재 루프로 놀고 있고 설명하는 방법을 모르는 이상한 행동을하고 있습니다. #include <stdio.h> int main() { int array[10],i; for (i = 0; i <=10 ; i++) { array[i]=0; /*code should never terminate*/ printf("test \n"); } printf("%d \n", sizeof(array)/sizeof(int)); return 0; } …

5
부호없는 정수 오버플로가 동작을 정의하지만 부호있는 정수 오버플로는 왜 그렇지 않습니까?
부호없는 정수 오버플로는 C 및 C ++ 표준에 의해 잘 정의됩니다. 예를 들어 C99 표준 ( §6.2.5/9) 상태 결과 부호없는 정수 유형으로 표현할 수없는 결과는 결과 유형으로 표현할 수있는 가장 큰 값보다 1이 큰 수의 모듈로 감소되기 때문에 부호없는 피연산자가 포함 된 계산은 절대로 흐르지 않습니다. 그러나 두 표준 모두 …

11
C ++ 프로그래머가 알아야 할 일반적인 정의되지 않은 동작은 무엇입니까? [닫은]
여기서 무엇을 요청하는지 말하기는 어렵습니다. 이 질문은 모호하거나 모호하거나 불완전하거나 지나치게 광범위하거나 수사적이며 현재 형태로 합리적으로 대답 할 수 없습니다. 다시 열 수 있도록이 질문을 명확하게 설명 하려면 도움말 센터를 방문하십시오 . 휴일 칠년 전에 . 잠김 . 이 질문과 주제는 주제가 다르지만 역사적 의미가 있기 때문에이 질문과 답변은 잠겨 …


5
왜이 루프가“경고 : 반복 3u가 정의되지 않은 동작을 불러옵니다”를 생성하고 4 줄 이상을 출력합니까?
이것을 컴파일 : #include <iostream> int main() { for (int i = 0; i < 4; ++i) std::cout << i*1000000000 << std::endl; } 그리고 gcc다음과 같은 경고를 생성합니다 : warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations] std::cout << i*1000000000 << std::endl; ^ 부호있는 정수 오버플로가 있음을 이해합니다. 내가 얻을 수없는 …

8
“while (1);”최적화 C ++ 0x에서
업데이트, 아래 참조! C ++ 0x를 사용하면 컴파일러가 다음 스 니펫에 대해 "Hello"를 인쇄 할 수 있습니다. #include <iostream> int main() { while(1) ; std::cout << "Hello" << std::endl; } 분명히 스레드 및 최적화 기능과 관련이 있습니다. 이것은 많은 사람들을 놀라게 할 수 있다고 생각합니다. 누군가 이것이 왜 이것이 허용되어야했는지에 …

5
향상된 GCC 6 최적화 프로그램이 실용적인 C ++ 코드를 깨뜨리는 이유는 무엇입니까?
GCC 6에는 새로운 최적화 기능이 있습니다 . this항상 null이 아니라고 가정하고이를 기반으로 최적화합니다. 값 범위 전파는 이제 C ++ 멤버 함수의 this 포인터가 널이 아닌 것으로 가정합니다. 이것은 일반적인 널 포인터 검사를 제거 하지만 부적합한 코드 기반 (예 : Qt-5, Chromium, KDevelop)도 중단 합니다. 임시 해결 방법으로 -fno-delete-null-pointer-checks를 사용할 수 …


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