728x90
반응형
질문 : C와 C ++ 모두에서 유효한 코드가 각 언어로 컴파일 될 때 다른 동작을 생성 할 수 있습니까?
C와 C ++에는 많은 차이가 있으며 모든 유효한 C 코드가 유효한 C ++ 코드는 아닙니다.
( "유효"란 정의 된 동작이있는 표준 코드를 의미합니다. 즉, 구현 특정 / 정의되지 않은 등이 아닙니다.)
C와 C ++ 모두에서 유효한 코드 조각이 각 언어의 표준 컴파일러로 컴파일 될 때 다른 동작을 생성하는 시나리오가 있습니까?
합리적이고 유용한 비교를하기 위해 (질문에서 명백한 허점을 찾으려하지 않고 실질적으로 유용한 것을 배우려고합니다) 다음과 같이 가정 해 보겠습니다.
- 전처리 기와 관련된 것은 없습니다 (즉
#ifdef __cplusplus
, pragma 등의 해킹이 없음을 의미합니다.) - 구현에 정의 된 모든 것은 두 언어에서 동일합니다 (예 : 숫자 제한 등).
- 각 표준의 합리적으로 최신 버전을 비교하고 있습니다 (예 : C ++ 98 및 C90 이상).
버전이 중요한 경우 각 버전이 다른 동작을 생성하는지 언급하십시오.
답변
C와 C ++에서 유효한 다음은 C와 C ++에서 i
에서 다른 값을 생성 할 가능성이 높습니다.
int i = sizeof('a');
차이점에 대한 설명은 C / C ++의 문자 크기 ( 'a')를 참조하십시오.
이 기사 에서 또 하나 :
#include <stdio.h>
int sz = 80;
int main(void)
{
struct sz { char c; };
int val = sizeof(sz); // sizeof(int) in C,
// sizeof(struct sz) in C++
printf("%d\n", val);
return 0;
}
출처 : https://stackoverflow.com/questions/12887700/can-code-that-is-valid-in-both-c-and-c-produce-different-behavior-when-compile
728x90
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
C ++에서 POD 유형이란? (0) | 2021.06.12 |
---|---|
C ++에서 현재 시간과 날짜를 얻는 방법 (0) | 2021.06.12 |
C ++에서 인터페이스를 선언하는 방법 (0) | 2021.06.10 |
표준 C ++ / C ++ 11 / C를 사용하여 파일이 존재하는지 확인하는 가장 빠른 방법 (0) | 2021.06.10 |
C ++에서 ifstream을 사용하여 한 줄씩 파일 읽기 (0) | 2021.06.09 |